@dolomite-exchange/dolomite-margin 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/Account.json +11 -11
- package/build/contracts/Actions.json +11 -11
- package/build/contracts/Address.json +1 -1
- package/build/contracts/Admin.json +23 -23
- package/build/contracts/AdminImpl.json +35 -307
- package/build/contracts/AdvancedMath.json +7 -7
- package/build/contracts/AmmRebalancerProxy.json +577 -621
- package/build/contracts/AmmRebalancerProxyV1.json +78 -32
- package/build/contracts/Babylonian.json +1 -1
- package/build/contracts/Bits.json +9 -9
- package/build/contracts/Cache.json +13 -13
- package/build/contracts/ChainlinkPriceOracleV1.json +16 -16
- package/build/contracts/Context.json +1 -1
- package/build/contracts/CustomTestToken.json +9 -9
- package/build/contracts/Decimal.json +9 -9
- package/build/contracts/DelayedMultiSig.json +9 -9
- package/build/contracts/DolomiteAmmERC20.json +11 -11
- package/build/contracts/DolomiteAmmFactory.json +14 -52
- package/build/contracts/DolomiteAmmLibrary.json +24 -24
- package/build/contracts/DolomiteAmmPair.json +27 -27
- package/build/contracts/DolomiteAmmRouterProxy.json +30 -363
- package/build/contracts/DolomiteMargin.json +21 -67
- package/build/contracts/DoubleExponentInterestSetter.json +15 -21
- package/build/contracts/EnumerableSet.json +7 -7
- package/build/contracts/ErroringOmiseToken.json +9 -9
- package/build/contracts/ErroringToken.json +10 -10
- package/build/contracts/Events.json +17 -17
- package/build/contracts/ExcessivelySafeCall.json +35 -35
- package/build/contracts/Exchange.json +15 -15
- package/build/contracts/Expiry.json +36 -36
- package/build/contracts/Getters.json +33 -33
- package/build/contracts/IAutoTrader.json +9 -9
- package/build/contracts/ICallee.json +7 -7
- package/build/contracts/IChainlinkAggregator.json +5 -5
- package/build/contracts/IDolomiteAmmERC20.json +5 -5
- package/build/contracts/IDolomiteAmmFactory.json +9 -9
- package/build/contracts/IDolomiteAmmPair.json +9 -9
- package/build/contracts/IDolomiteMargin.json +23 -23
- package/build/contracts/IERC20.json +1 -1
- package/build/contracts/IERC20Detailed.json +5 -5
- package/build/contracts/IExchangeWrapper.json +5 -5
- package/build/contracts/IExpiry.json +9 -9
- package/build/contracts/IInterestSetter.json +7 -7
- package/build/contracts/ILiquidationCallback.json +7 -7
- package/build/contracts/IMakerOracle.json +5 -5
- package/build/contracts/IOasisDex.json +5 -5
- package/build/contracts/IPriceOracle.json +7 -7
- package/build/contracts/IRecyclable.json +9 -9
- package/build/contracts/ITransferProxy.json +5 -5
- package/build/contracts/IUniswapV2Callee.json +5 -5
- package/build/contracts/IUniswapV2Factory.json +5 -5
- package/build/contracts/IUniswapV2Pair.json +5 -5
- package/build/contracts/IUniswapV2Router.json +5 -5
- package/build/contracts/IWETH.json +5 -5
- package/build/contracts/Interest.json +15 -15
- package/build/contracts/LiquidateOrVaporizeImpl.json +32 -83
- package/build/contracts/LiquidatorProxyHelper.json +23 -23
- package/build/contracts/LiquidatorProxyV1.json +30 -36
- package/build/contracts/LiquidatorProxyV1WithAmm.json +49 -105
- package/build/contracts/Math.json +1 -1
- package/build/contracts/Migrations.json +8 -14
- package/build/contracts/Monetary.json +7 -7
- package/build/contracts/MultiCall.json +8 -14
- package/build/contracts/MultiSig.json +7 -7
- package/build/contracts/OmiseToken.json +8 -8
- package/build/contracts/OnlyDolomiteMargin.json +11 -11
- package/build/contracts/Operation.json +15 -15
- package/build/contracts/OperationImpl.json +39 -47
- package/build/contracts/Ownable.json +1 -1
- package/build/contracts/PartiallyDelayedMultiSig.json +9 -9
- package/build/contracts/PayableProxy.json +17 -23
- package/build/contracts/Permission.json +11 -11
- package/build/contracts/PolynomialInterestSetter.json +13 -13
- package/build/contracts/RecyclableTokenProxy.json +25 -25
- package/build/contracts/ReentrancyGuard.json +1 -1
- package/build/contracts/Require.json +7 -7
- package/build/contracts/SafeERC20.json +1 -1
- package/build/contracts/SafeETH.json +7 -7
- package/build/contracts/SafeLiquidationCallback.json +17 -17
- package/build/contracts/SafeMath.json +1 -1
- package/build/contracts/SignedOperationProxy.json +21 -104
- package/build/contracts/SimpleFeeOwner.json +18 -63
- package/build/contracts/State.json +9 -9
- package/build/contracts/Storage.json +37 -37
- package/build/contracts/TestAmmRebalancerProxy.json +32 -58
- package/build/contracts/TestAutoTrader.json +22 -22
- package/build/contracts/TestBtcUsdChainlinkAggregator.json +10 -10
- package/build/contracts/TestCallee.json +19 -19
- package/build/contracts/TestChainlinkPriceOracleV1.json +10 -94
- package/build/contracts/TestCounter.json +7 -7
- package/build/contracts/TestDaiUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestDolomiteMargin.json +22 -22
- package/build/contracts/TestDoubleExponentInterestSetter.json +10 -10
- package/build/contracts/TestEthUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestExchangeWrapper.json +28 -28
- package/build/contracts/TestInterestSetter.json +13 -13
- package/build/contracts/TestLib.json +22 -22
- package/build/contracts/TestLinkUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestLiquidateCallback.json +719 -719
- package/build/contracts/TestLiquidationCallback.json +13 -13
- package/build/contracts/TestLrcEthChainlinkAggregator.json +11 -11
- package/build/contracts/TestMakerOracle.json +10 -10
- package/build/contracts/TestMaticUsdChainlinkAggregator.json +10 -10
- package/build/contracts/TestOasisDex.json +12 -12
- package/build/contracts/TestOperationImpl.json +14 -14
- package/build/contracts/TestPolynomialInterestSetter.json +10 -10
- package/build/contracts/TestPriceAggregator.json +9 -9
- package/build/contracts/TestPriceOracle.json +13 -13
- package/build/contracts/TestRecyclableToken.json +9 -9
- package/build/contracts/TestSimpleCallee.json +15 -15
- package/build/contracts/TestToken.json +9 -9
- package/build/contracts/TestTrader.json +17 -17
- package/build/contracts/TestUniswapAmmRebalancerProxy.json +16 -16
- package/build/contracts/TestUsdcUsdChainlinkAggregator.json +11 -11
- package/build/contracts/TestWETH.json +9 -9
- package/build/contracts/Time.json +9 -9
- package/build/contracts/Token.json +9 -9
- package/build/contracts/TokenA.json +10 -10
- package/build/contracts/TokenB.json +10 -10
- package/build/contracts/TokenC.json +10 -10
- package/build/contracts/TokenD.json +10 -10
- package/build/contracts/TokenE.json +10 -10
- package/build/contracts/TokenF.json +10 -10
- package/build/contracts/TransferProxy.json +22 -28
- package/build/contracts/TypedSignature.json +9 -9
- package/build/contracts/Types.json +9 -9
- package/build/contracts/UQ112x112.json +7 -7
- package/build/contracts/UniswapV2ERC20.json +7 -7
- package/build/contracts/UniswapV2Factory.json +12 -12
- package/build/contracts/UniswapV2Library.json +20 -20
- package/build/contracts/UniswapV2Pair.json +17 -17
- package/build/contracts/UniswapV2Router02.json +16 -16
- package/build/contracts/WETH9.json +1 -1
- package/contracts/external/amm/DolomiteAmmERC20.sol +135 -0
- package/contracts/external/amm/DolomiteAmmFactory.sol +122 -0
- package/contracts/external/amm/DolomiteAmmPair.sol +573 -0
- package/contracts/external/amm/SimpleFeeOwner.sol +107 -0
- package/contracts/external/helpers/LiquidatorProxyHelper.sol +252 -0
- package/contracts/external/helpers/OnlyDolomiteMargin.sol +63 -0
- package/contracts/external/interestsetters/DoubleExponentInterestSetter.sol +212 -0
- package/contracts/external/interestsetters/PolynomialInterestSetter.sol +205 -0
- package/contracts/external/interfaces/IChainlinkAggregator.sol +33 -0
- package/contracts/external/interfaces/IDolomiteAmmERC20.sol +52 -0
- package/contracts/external/interfaces/IDolomiteAmmFactory.sol +42 -0
- package/contracts/external/interfaces/IDolomiteAmmPair.sol +116 -0
- package/contracts/external/interfaces/IExpiry.sol +70 -0
- package/contracts/external/interfaces/IMakerOracle.sol +52 -0
- package/contracts/external/interfaces/IOasisDex.sol +326 -0
- package/contracts/external/interfaces/ITransferProxy.sol +53 -0
- package/contracts/external/interfaces/IUniswapV2Router.sol +134 -0
- package/contracts/external/lib/AdvancedMath.sol +23 -0
- package/contracts/external/lib/DolomiteAmmLibrary.sol +323 -0
- package/contracts/external/lib/TypedSignature.sol +120 -0
- package/contracts/external/lib/UQ112x112.sol +22 -0
- package/contracts/external/multisig/DelayedMultiSig.sol +206 -0
- package/contracts/external/multisig/MultiSig.sol +571 -0
- package/contracts/external/multisig/PartiallyDelayedMultiSig.sol +174 -0
- package/contracts/external/oracles/ChainlinkPriceOracleV1.sol +197 -0
- package/contracts/external/oracles/TestChainlinkPriceOracleV1.sol +98 -0
- package/contracts/external/proxies/AmmRebalancerProxyV1.sol +465 -0
- package/contracts/external/proxies/DolomiteAmmRouterProxy.sol +877 -0
- package/contracts/external/proxies/LiquidatorProxyV1.sol +507 -0
- package/contracts/external/proxies/LiquidatorProxyV1WithAmm.sol +574 -0
- package/contracts/external/proxies/PayableProxy.sol +146 -0
- package/contracts/external/proxies/RecyclableTokenProxy.sol +463 -0
- package/contracts/external/proxies/SignedOperationProxy.sol +553 -0
- package/contracts/external/proxies/TransferProxy.sol +207 -0
- package/contracts/external/traders/Expiry.sol +532 -0
- package/contracts/external/uniswap-v2/UniswapV2ERC20.sol +118 -0
- package/contracts/external/uniswap-v2/UniswapV2Factory.sol +67 -0
- package/contracts/external/uniswap-v2/UniswapV2Pair.sol +283 -0
- package/contracts/external/uniswap-v2/UniswapV2Router02.sol +566 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Callee.sol +13 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol +18 -0
- package/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol +67 -0
- package/contracts/external/uniswap-v2/interfaces/IWETH.sol +7 -0
- package/contracts/external/uniswap-v2/libraries/SafeETH.sol +29 -0
- package/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol +117 -0
- package/contracts/external/utils/MultiCall.sol +95 -0
- package/contracts/protocol/impl/artifacts/OperationImpl.json +80 -0
- package/contracts/protocol/impl/artifacts/OperationImpl_metadata.json +193 -0
- package/dist/build/published_contracts/AdminImpl.json +2 -2
- package/dist/build/published_contracts/AmmRebalancerProxyV1.json +5 -0
- package/dist/build/published_contracts/ChainlinkPriceOracleV1.json +1 -1
- package/dist/build/published_contracts/DolomiteAmmFactory.json +1 -1
- package/dist/build/published_contracts/DolomiteAmmRouterProxy.json +1 -1
- package/dist/build/published_contracts/DoubleExponentInterestSetter.json +2 -2
- package/dist/build/published_contracts/Expiry.json +1 -1
- package/dist/build/published_contracts/LiquidatorProxyV1.json +1 -1
- package/dist/build/published_contracts/LiquidatorProxyV1WithAmm.json +1 -1
- package/dist/build/published_contracts/MultiCall.json +1 -1
- package/dist/build/published_contracts/PayableProxy.json +2 -2
- package/dist/build/published_contracts/SignedOperationProxy.json +2 -2
- package/dist/build/published_contracts/SimpleFeeOwner.json +1 -1
- package/dist/build/published_contracts/TestUniswapAmmRebalancerProxy.json +140 -0
- package/dist/build/published_contracts/TransferProxy.json +1 -1
- package/dist/src/lib/Contracts.d.ts +3 -1
- package/dist/src/lib/Contracts.js +7 -3
- package/dist/src/lib/Contracts.js.map +1 -1
- package/package.json +2 -1
|
@@ -1038,15 +1038,15 @@
|
|
|
1038
1038
|
"type": "function"
|
|
1039
1039
|
}
|
|
1040
1040
|
],
|
|
1041
|
-
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/UniswapV2Router02.sol\":\"UniswapV2Router02\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/UniswapV2Router02.sol\":{\"keccak256\":\"0x2609272f69fc1810c47057c92441a8f811b750b8877bbd242e1bae8ee015afce\",\"urls\":[\"bzz-raw://636b07e241841595709bdd63e8a9f6f26a7e6cee35c7aa7dcdf8dd2c97e46002\",\"dweb:/ipfs/QmZrikCLZz4mMssq6eKaiY7nJWJsENmznLHkYC2jmjTc1D\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0x8a4afa0d6b02a342c46834aab92ded1a0c79a91a48571548721dd44274584e2d\",\"urls\":[\"bzz-raw://b9e2e1ae41aabd054346cfb52a9d9394ffad519347362350a0b76a3236184e8e\",\"dweb:/ipfs/Qmd3uS4fijtCkxZXbgBxscJim6F1bkjEiWhJ6jLD3FpdKr\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x022ea15b611c155e236053a484d21223ae6f74da3828379cd8a34a16649b5945\",\"urls\":[\"bzz-raw://41979b601b10b34937f2f5939ab5c5240759c3434e405bf84a69ef94a1612454\",\"dweb:/ipfs/QmbK4y63kjtpbxFgResFo9K2bEhNxcxoTqddpJXeHxwqcT\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/interfaces/IWETH.sol\":{\"keccak256\":\"0x0d1c0eb6392da65457db21f1683864389bce76816bb571d4db94c384c35be072\",\"urls\":[\"bzz-raw://e857758fd1ec75e3a9b38ac648a04c135590ca9d7da31157c122d9580aeb3e15\",\"dweb:/ipfs/QmUww695RBAPEY48A8dmTymMTijh9qzE3N3DFcvHcZSv23\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/libraries/SafeETH.sol\":{\"keccak256\":\"0x892161c481fbcda56cbee1af0c4b507251e1aab8b922fbe78b0d21dcf77599a2\",\"urls\":[\"bzz-raw://2192df2eccdc0869f634e032c2aee543e4cae3569ab852fe115c2a5c04617f26\",\"dweb:/ipfs/QmTwx3GTTX6TkTDd6qN76R3JfV768erFKKnKMnT7Qdefw5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol\":{\"keccak256\":\"0x0d470e34dac4842332bd998ac53ed5f324078c44fd7a3d688e9294cf29b00858\",\"urls\":[\"bzz-raw://d682a3481b32813b72bb96c7d53ce8c0e6b1ddc93ebaa5abae5b82b9eed0fabc\",\"dweb:/ipfs/QmSspmRwvdS3F3BvbtYZVyrvtNn1x2x6SfnjtjMMpSsYHs\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzz-raw://7d8ec81683520c06baeef3f7e06cd82bd6fd5fa611f26857f475f6c829540aff\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
|
|
1042
|
-
"bytecode": "0x608060405234801561001057600080fd5b50604051620045e0380380620045e08339818101604052604081101561003557600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161790915560018054939092169216919091179055614563806200007d6000396000f3fe6080604052600436106101965760003560e01c806385f8c259116100e1578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610b22578063e8e3370014610b95578063f305d71914610c15578063fb3bdb4114610c5b57610196565b8063baa2abde146109f9578063c45a015514610a56578063d06ca61f14610a6b57610196565b8063ad615dec116100bb578063ad615dec146108ea578063af2979eb14610920578063b6f9de951461097357610196565b806385f8c259146107eb5780638803dbee14610821578063ad5c4648146108b957610196565b806338ed1739116101435780635c11d7951161011d5780635c11d79514610635578063791ac947146106cd5780637ff36ab51461076557610196565b806338ed1739146104925780634a25d94a1461052a5780635b0d5984146105c257610196565b80631f00ca74116101745780631f00ca74146103485780632195995c146103ff57806324e43f3d1461047d57610196565b806302751cec146101ac578063054d50d41461021857806318cbafe514610260575b6001546001600160a01b031633146101aa57fe5b005b3480156101b857600080fd5b506101ff600480360360c08110156101cf57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610ce1565b6040805192835260208301919091528051918290030190f35b34801561022457600080fd5b5061024e6004803603606081101561023b57600080fd5b5080359060208101359060400135610dfa565b60408051918252519081900360200190f35b34801561026c57600080fd5b506102f8600480360360a081101561028357600080fd5b8135916020810135918101906060810160408201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460208302840111640100000000831117156102de57600080fd5b91935091506001600160a01b038135169060200135610e0f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033457818101518382015260200161031c565b505050509050019250505060405180910390f35b34801561035457600080fd5b506102f86004803603604081101561036b57600080fd5b8135919081019060408101602082013564010000000081111561038d57600080fd5b82018360208201111561039f57600080fd5b803590602001918460208302840111640100000000831117156103c157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061110a945050505050565b34801561040b57600080fd5b506101ff600480360361016081101561042357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561112d565b34801561048957600080fd5b5061024e61122c565b34801561049e57600080fd5b506102f8600480360360a08110156104b557600080fd5b8135916020810135918101906060810160408201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184602083028401116401000000008311171561051057600080fd5b91935091506001600160a01b03813516906020013561123b565b34801561053657600080fd5b506102f8600480360360a081101561054d57600080fd5b81359160208101359181019060608101604082013564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b91935091506001600160a01b038135169060200135611384565b3480156105ce57600080fd5b5061024e60048036036101408110156105e657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611502565b34801561064157600080fd5b506101aa600480360360a081101561065857600080fd5b81359160208101359181019060608101604082013564010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460208302840111640100000000831117156106b357600080fd5b91935091506001600160a01b0381351690602001356115fc565b3480156106d957600080fd5b506101aa600480360360a08110156106f057600080fd5b81359160208101359181019060608101604082013564010000000081111561071757600080fd5b82018360208201111561072957600080fd5b8035906020019184602083028401116401000000008311171561074b57600080fd5b91935091506001600160a01b038135169060200135611897565b6102f86004803603608081101561077b57600080fd5b8135919081019060408101602082013564010000000081111561079d57600080fd5b8201836020820111156107af57600080fd5b803590602001918460208302840111640100000000831117156107d157600080fd5b91935091506001600160a01b038135169060200135611b1b565b3480156107f757600080fd5b5061024e6004803603606081101561080e57600080fd5b5080359060208101359060400135611e10565b34801561082d57600080fd5b506102f8600480360360a081101561084457600080fd5b81359160208101359181019060608101604082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184602083028401116401000000008311171561089f57600080fd5b91935091506001600160a01b038135169060200135611e1d565b3480156108c557600080fd5b506108ce611f14565b604080516001600160a01b039092168252519081900360200190f35b3480156108f657600080fd5b5061024e6004803603606081101561090d57600080fd5b5080359060208101359060400135611f23565b34801561092c57600080fd5b5061024e600480360360c081101561094357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f30565b6101aa6004803603608081101561098957600080fd5b813591908101906040810160208201356401000000008111156109ab57600080fd5b8201836020820111156109bd57600080fd5b803590602001918460208302840111640100000000831117156109df57600080fd5b91935091506001600160a01b0381351690602001356120c9565b348015610a0557600080fd5b506101ff600480360360e0811015610a1c57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612426565b348015610a6257600080fd5b506108ce612699565b348015610a7757600080fd5b506102f860048036036040811015610a8e57600080fd5b81359190810190604081016020820135640100000000811115610ab057600080fd5b820183602082011115610ac257600080fd5b80359060200191846020830284011164010000000083111715610ae457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a8945050505050565b348015610b2e57600080fd5b506101ff6004803603610140811015610b4657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356126c2565b348015610ba157600080fd5b50610bf76004803603610100811015610bb957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356127d8565b60408051938452602084019290925282820152519081900360600190f35b610bf7600480360360c0811015610c2b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612913565b6102f860048036036080811015610c7157600080fd5b81359190810190604081016020820135640100000000811115610c9357600080fd5b820183602082011115610ca557600080fd5b80359060200191846020830284011164010000000083111715610cc757600080fd5b91935091506001600160a01b038135169060200135612b6d565b6000808242811015610d3a576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154610d56908a906001600160a01b03168a8a8a308a612426565b9093509150610d66898685612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b50505050610dee8583612f16565b50965096945050505050565b6000610e0784848461303d565b949350505050565b60608142811015610e67576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610e8357fe5b905060200201356001600160a01b03166001600160a01b031614610eee576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f38936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110610f4b57fe5b60200260200101511015610f905760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61102286866000818110610fa057fe5b905060200201356001600160a01b0316336110086000809054906101000a90046001600160a01b03168a8a6000818110610fd657fe5b905060200201356001600160a01b03168b8b6001818110610ff357fe5b905060200201356001600160a01b0316613262565b8560008151811061101557fe5b602002602001015161334d565b611061828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506133db915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061108857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110c657600080fd5b505af11580156110da573d6000803e3d6000fd5b505050506110ff84836001855103815181106110f257fe5b6020026020010151612f16565b509695505050505050565b600054606090611124906001600160a01b031684846135f8565b90505b92915050565b6000805481908190611149906001600160a01b03168f8f613262565b9050600087611158578c61115c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506112128f8f8f8f8f8f8f612426565b809450819550505050509b509b9950505050505050505050565b6000611236613719565b905090565b60608142811015611293576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526112dd936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b915086826001845103815181106112f057fe5b602002602001015110156113355760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61134586866000818110610fa057fe5b6110ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b606081428110156113dc576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316868660001981018181106113f857fe5b905060200201356001600160a01b03166001600160a01b031614611463576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526114ad936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b915086826000815181106114bd57fe5b60200260200101511115610f905760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b600080546001548291611523916001600160a01b03918216918f9116613262565b9050600086611532578b611536565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506115eb8d8d8d8d8d8d611f30565b9d9c50505050505050505050505050565b8042811015611652576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6116bb8585600081811061166257fe5b905060200201356001600160a01b0316336116b56000809054906101000a90046001600160a01b03168989600081811061169857fe5b905060200201356001600160a01b03168a8a6001818110610ff357fe5b8a61334d565b6000858560001981018181106116cd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173257600080fd5b505afa158015611746573d6000803e3d6000fd5b505050506040513d602081101561175c57600080fd5b5051604080516020888102828101820190935288825292935061179e92909189918991829185019084908082843760009201919091525088925061373d915050565b8661185082888860001981018181106117b357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b50519063ffffffff613a4516565b101561188d5760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b5050505050505050565b80428110156118ed576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168585600019810181811061190957fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6119848585600081811061166257fe5b6119c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061373d915050565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a2657600080fd5b505afa158015611a3a573d6000803e3d6000fd5b505050506040513d6020811015611a5057600080fd5b5051905086811015611a935760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b5050505061188d8482612f16565b60608142811015611b73576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081611b8a57fe5b905060200201356001600160a01b03166001600160a01b031614611bf5576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611c3f936001600160a01b0316923492918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110611c5257fe5b60200260200101511015611c975760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611cb957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611d319350909116908a908a908161169857fe5b84600081518110611d3e57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b5051611dc757fe5b611e06828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b5095945050505050565b6000610e07848484613a87565b60608142811015611e75576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611ebf936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b91508682600081518110611ecf57fe5b602002602001015111156113355760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b6001546001600160a01b031681565b6000610e07848484613b77565b60008142811015611f88576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154611fa49089906001600160a01b03168989893089612426565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191945061204192508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d602081101561203a57600080fd5b5051612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156120a757600080fd5b505af11580156120bb573d6000803e3d6000fd5b505050506110ff8483612f16565b804281101561211f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316858560008161213657fe5b905060200201356001600160a01b03166001600160a01b0316146121a1576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b600154604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b15801561220257600080fd5b505af1158015612216573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122479350909116908a908a908161169857fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b505050506040513d60208110156122c157600080fd5b50516122c957fe5b6000868660001981018181106122db57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561234057600080fd5b505afa158015612354573d6000803e3d6000fd5b505050506040513d602081101561236a57600080fd5b505160408051602089810282810182019093528982529293506123ac9290918a918a91829185019084908082843760009201919091525089925061373d915050565b8761185082898960001981018181106123c157fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b600080824281101561247f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60008054612497906001600160a01b03168c8c613262565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561250b57600080fd5b505af115801561251f573d6000803e3d6000fd5b505050506040513d602081101561253557600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050506040513d60408110156125c557600080fd5b508051602090910151909250905060006125df8e8e613c23565b509050806001600160a01b03168e6001600160a01b031614612602578183612605565b82825b90975095508a8710156126495760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b898610156126885760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b505050505097509795505050505050565b6000546001600160a01b031681565b600054606090611124906001600160a01b0316848461312d565b60008060006126fb6000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b0316613262565b905060008761270a578c61270e565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b505050506127c38e8e8e8e8e8e610ce1565b909f909e509c50505050505050505050505050565b60008060008342811015612833576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6128418c8c8c8c8c8c613d01565b6000805492965090945090612860906001600160a01b03168e8e613262565b905061286e8d33838861334d565b61287a8c33838761334d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156128d257600080fd5b505af11580156128e6573d6000803e3d6000fd5b505050506040513d60208110156128fc57600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561296e576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154612989908b906001600160a01b03168b348c8c613d01565b60008054600154939750919550916129af916001600160a01b03908116918e9116613262565b90506129bd8b33838861334d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a0d57600080fd5b505af1158015612a21573d6000803e3d6000fd5b5050600154604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015612a9357600080fd5b505af1158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b5051612ac557fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b5051925034841015612b5f57612b5f33853403612f16565b505096509650969350505050565b60608142811015612bc5576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081612bdc57fe5b905060200201356001600160a01b03166001600160a01b031614612c47576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612c91936001600160a01b0316928b92918b918b918291908501908490808284376000920191909152506135f892505050565b91503482600081518110612ca157fe5b60200260200101511115612ce65760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090612d0857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d3b57600080fd5b505af1158015612d4f573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612d809350909116908a908a908161169857fe5b84600081518110612d8d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612de457600080fd5b505af1158015612df8573d6000803e3d6000fd5b505050506040513d6020811015612e0e57600080fd5b5051612e1657fe5b612e55828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b81600081518110612e6257fe5b6020026020010151341115611e0657611e063383600081518110612e8257fe5b60200260200101513403612f16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612f11908490613f55565b505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612f8057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f43565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612fe2576040519150601f19603f3d011682016040523d82523d6000602084013e612fe7565b606091505b5050905080612f11576040805162461bcd60e51b815260206004820152601c60248201527f536166654554483a204554485f5452414e534645525f4641494c454400000000604482015290519081900360640190fd5b600080841161307d5760405162461bcd60e51b815260040180806020018281038252602b815260200180614504602b913960400191505060405180910390fd5b60008311801561308d5750600082115b6130c85760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b60006130dc856103e563ffffffff61412b16565b905060006130f0828563ffffffff61412b16565b905060006131168361310a886103e863ffffffff61412b16565b9063ffffffff61418416565b905080828161312157fe5b04979650505050505050565b6060600282511015613186576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b81516040519080825280602002602001820160405280156131b1578160200160208202803883390190505b50905082816000815181106131c257fe5b60200260200101818152505060005b600183510381101561325a57600080613214878685815181106131f057fe5b602002602001015187866001018151811061320757fe5b60200260200101516141de565b9150915061323684848151811061322757fe5b6020026020010151838361303d565b84846001018151811061324557fe5b602090810291909101015250506001016131d1565b509392505050565b60008060006132718585613c23565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f5a9f5c3574970dea87031a97b794f46fbe4a0f2c3bf2d6e322a3edfb9ff6d0b5609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526133d5908590613f55565b50505050565b60005b60018351038110156133d5576000808483815181106133f957fe5b602002602001015185846001018151811061341057fe5b60200260200101519150915060006134288383613c23565b509050600087856001018151811061343c57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461346a5782600061346e565b6000835b91509150600060028a5103881061348557886134b6565b6000548a516134b6916001600160a01b03169088908d9060028d019081106134a957fe5b6020026020010151613262565b6000549091506134d0906001600160a01b03168888613262565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561350d576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561357e578181015183820152602001613566565b50505050905090810190601f1680156135ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b5050600190990198506133de975050505050505050565b6060600282511015613651576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815160405190808252806020026020018201604052801561367c578160200160208202803883390190505b509050828160018351038151811061369057fe5b60209081029190910101528151600019015b801561325a576000806136d2878660018603815181106136be57fe5b602002602001015187868151811061320757fe5b915091506136f48484815181106136e557fe5b60200260200101518383613a87565b84600185038151811061370357fe5b60209081029190910101525050600019016136a2565b7f5a9f5c3574970dea87031a97b794f46fbe4a0f2c3bf2d6e322a3edfb9ff6d0b590565b60005b6001835103811015612f115760008084838151811061375b57fe5b602002602001015185846001018151811061377257fe5b602002602001015191509150600061378a8383613c23565b5060008054919250906137a7906001600160a01b03168585613262565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d606081101561381257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461384f578284613852565b83835b915091506138b0828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b95506138bd86838361303d565b945050505050600080856001600160a01b0316886001600160a01b0316146138e7578260006138eb565b6000835b91509150600060028c51038a10613902578a613926565b6000548c51613926916001600160a01b0316908a908f9060028f019081106134a957fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139c95781810151838201526020016139b1565b50505050905090810190601f1680156139f65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613a1857600080fd5b505af1158015613a2c573d6000803e3d6000fd5b50506001909b019a506137409950505050505050505050565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142ac565b6000808411613ac75760405162461bcd60e51b815260040180806020018281038252602c81526020018061437d602c913960400191505060405180910390fd5b600083118015613ad75750600082115b613b125760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b6000613b366103e8613b2a868863ffffffff61412b16565b9063ffffffff61412b16565b90506000613b506103e5613b2a868963ffffffff613a4516565b9050613b6d6001828481613b6057fe5b049063ffffffff61418416565b9695505050505050565b6000808411613bb75760405162461bcd60e51b815260040180806020018281038252602581526020018061443d6025913960400191505060405180910390fd5b600083118015613bc75750600082115b613c025760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b82613c13858463ffffffff61412b16565b81613c1a57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613c775760405162461bcd60e51b81526004018080602001828103825260258152602001806143a96025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613c97578284613c9a565b83835b90925090506001600160a01b038216613cfa576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60008054604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d6020811015613d9b57600080fd5b50516001600160a01b03161415613e4c5760008054604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b505050506040513d6020811015613e4957600080fd5b50505b600080548190613e66906001600160a01b03168b8b6141de565b91509150816000148015613e78575080155b15613e8857879350869250613f48565b6000613e95898484613b77565b9050878111613ee85785811015613edd5760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b889450925082613f46565b6000613ef5898486613b77565b905089811115613f0157fe5b87811015613f405760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b613f67826001600160a01b0316614343565b613fb8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061401457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613fd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614076576040519150601f19603f3d011682016040523d82523d6000602084013e61407b565b606091505b5091509150816140d2576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156133d5578080602001905160208110156140ee57600080fd5b50516133d55760405162461bcd60e51b815260040180806020018281038252602a8152602001806144da602a913960400191505060405180910390fd5b60008261413a57506000611127565b8282028284828161414757fe5b04146111245760405162461bcd60e51b815260040180806020018281038252602181526020018061441c6021913960400191505060405180910390fd5b600082820183811015611124576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060006141ed8585613c23565b5090506000806141fe888888613262565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d606081101561426057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461429a57808261429d565b81815b90999098509650505050505050565b6000818484111561433b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143005781810151838201526020016142e8565b50505050905090810190601f16801561432d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e0757505015159291505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a723158201fc57f3c206b807148048c54750aeb0715a25984ef0fad8c89188e6b04f9a03f64736f6c63430005100032",
|
|
1043
|
-
"deployedBytecode": "0x6080604052600436106101965760003560e01c806385f8c259116100e1578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610b22578063e8e3370014610b95578063f305d71914610c15578063fb3bdb4114610c5b57610196565b8063baa2abde146109f9578063c45a015514610a56578063d06ca61f14610a6b57610196565b8063ad615dec116100bb578063ad615dec146108ea578063af2979eb14610920578063b6f9de951461097357610196565b806385f8c259146107eb5780638803dbee14610821578063ad5c4648146108b957610196565b806338ed1739116101435780635c11d7951161011d5780635c11d79514610635578063791ac947146106cd5780637ff36ab51461076557610196565b806338ed1739146104925780634a25d94a1461052a5780635b0d5984146105c257610196565b80631f00ca74116101745780631f00ca74146103485780632195995c146103ff57806324e43f3d1461047d57610196565b806302751cec146101ac578063054d50d41461021857806318cbafe514610260575b6001546001600160a01b031633146101aa57fe5b005b3480156101b857600080fd5b506101ff600480360360c08110156101cf57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610ce1565b6040805192835260208301919091528051918290030190f35b34801561022457600080fd5b5061024e6004803603606081101561023b57600080fd5b5080359060208101359060400135610dfa565b60408051918252519081900360200190f35b34801561026c57600080fd5b506102f8600480360360a081101561028357600080fd5b8135916020810135918101906060810160408201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460208302840111640100000000831117156102de57600080fd5b91935091506001600160a01b038135169060200135610e0f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033457818101518382015260200161031c565b505050509050019250505060405180910390f35b34801561035457600080fd5b506102f86004803603604081101561036b57600080fd5b8135919081019060408101602082013564010000000081111561038d57600080fd5b82018360208201111561039f57600080fd5b803590602001918460208302840111640100000000831117156103c157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061110a945050505050565b34801561040b57600080fd5b506101ff600480360361016081101561042357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561112d565b34801561048957600080fd5b5061024e61122c565b34801561049e57600080fd5b506102f8600480360360a08110156104b557600080fd5b8135916020810135918101906060810160408201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184602083028401116401000000008311171561051057600080fd5b91935091506001600160a01b03813516906020013561123b565b34801561053657600080fd5b506102f8600480360360a081101561054d57600080fd5b81359160208101359181019060608101604082013564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b91935091506001600160a01b038135169060200135611384565b3480156105ce57600080fd5b5061024e60048036036101408110156105e657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611502565b34801561064157600080fd5b506101aa600480360360a081101561065857600080fd5b81359160208101359181019060608101604082013564010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460208302840111640100000000831117156106b357600080fd5b91935091506001600160a01b0381351690602001356115fc565b3480156106d957600080fd5b506101aa600480360360a08110156106f057600080fd5b81359160208101359181019060608101604082013564010000000081111561071757600080fd5b82018360208201111561072957600080fd5b8035906020019184602083028401116401000000008311171561074b57600080fd5b91935091506001600160a01b038135169060200135611897565b6102f86004803603608081101561077b57600080fd5b8135919081019060408101602082013564010000000081111561079d57600080fd5b8201836020820111156107af57600080fd5b803590602001918460208302840111640100000000831117156107d157600080fd5b91935091506001600160a01b038135169060200135611b1b565b3480156107f757600080fd5b5061024e6004803603606081101561080e57600080fd5b5080359060208101359060400135611e10565b34801561082d57600080fd5b506102f8600480360360a081101561084457600080fd5b81359160208101359181019060608101604082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184602083028401116401000000008311171561089f57600080fd5b91935091506001600160a01b038135169060200135611e1d565b3480156108c557600080fd5b506108ce611f14565b604080516001600160a01b039092168252519081900360200190f35b3480156108f657600080fd5b5061024e6004803603606081101561090d57600080fd5b5080359060208101359060400135611f23565b34801561092c57600080fd5b5061024e600480360360c081101561094357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f30565b6101aa6004803603608081101561098957600080fd5b813591908101906040810160208201356401000000008111156109ab57600080fd5b8201836020820111156109bd57600080fd5b803590602001918460208302840111640100000000831117156109df57600080fd5b91935091506001600160a01b0381351690602001356120c9565b348015610a0557600080fd5b506101ff600480360360e0811015610a1c57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612426565b348015610a6257600080fd5b506108ce612699565b348015610a7757600080fd5b506102f860048036036040811015610a8e57600080fd5b81359190810190604081016020820135640100000000811115610ab057600080fd5b820183602082011115610ac257600080fd5b80359060200191846020830284011164010000000083111715610ae457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a8945050505050565b348015610b2e57600080fd5b506101ff6004803603610140811015610b4657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356126c2565b348015610ba157600080fd5b50610bf76004803603610100811015610bb957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356127d8565b60408051938452602084019290925282820152519081900360600190f35b610bf7600480360360c0811015610c2b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612913565b6102f860048036036080811015610c7157600080fd5b81359190810190604081016020820135640100000000811115610c9357600080fd5b820183602082011115610ca557600080fd5b80359060200191846020830284011164010000000083111715610cc757600080fd5b91935091506001600160a01b038135169060200135612b6d565b6000808242811015610d3a576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154610d56908a906001600160a01b03168a8a8a308a612426565b9093509150610d66898685612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b50505050610dee8583612f16565b50965096945050505050565b6000610e0784848461303d565b949350505050565b60608142811015610e67576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610e8357fe5b905060200201356001600160a01b03166001600160a01b031614610eee576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f38936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110610f4b57fe5b60200260200101511015610f905760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61102286866000818110610fa057fe5b905060200201356001600160a01b0316336110086000809054906101000a90046001600160a01b03168a8a6000818110610fd657fe5b905060200201356001600160a01b03168b8b6001818110610ff357fe5b905060200201356001600160a01b0316613262565b8560008151811061101557fe5b602002602001015161334d565b611061828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506133db915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061108857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110c657600080fd5b505af11580156110da573d6000803e3d6000fd5b505050506110ff84836001855103815181106110f257fe5b6020026020010151612f16565b509695505050505050565b600054606090611124906001600160a01b031684846135f8565b90505b92915050565b6000805481908190611149906001600160a01b03168f8f613262565b9050600087611158578c61115c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506112128f8f8f8f8f8f8f612426565b809450819550505050509b509b9950505050505050505050565b6000611236613719565b905090565b60608142811015611293576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526112dd936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b915086826001845103815181106112f057fe5b602002602001015110156113355760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61134586866000818110610fa057fe5b6110ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b606081428110156113dc576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316868660001981018181106113f857fe5b905060200201356001600160a01b03166001600160a01b031614611463576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526114ad936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b915086826000815181106114bd57fe5b60200260200101511115610f905760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b600080546001548291611523916001600160a01b03918216918f9116613262565b9050600086611532578b611536565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506115eb8d8d8d8d8d8d611f30565b9d9c50505050505050505050505050565b8042811015611652576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6116bb8585600081811061166257fe5b905060200201356001600160a01b0316336116b56000809054906101000a90046001600160a01b03168989600081811061169857fe5b905060200201356001600160a01b03168a8a6001818110610ff357fe5b8a61334d565b6000858560001981018181106116cd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173257600080fd5b505afa158015611746573d6000803e3d6000fd5b505050506040513d602081101561175c57600080fd5b5051604080516020888102828101820190935288825292935061179e92909189918991829185019084908082843760009201919091525088925061373d915050565b8661185082888860001981018181106117b357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b50519063ffffffff613a4516565b101561188d5760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b5050505050505050565b80428110156118ed576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168585600019810181811061190957fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6119848585600081811061166257fe5b6119c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061373d915050565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a2657600080fd5b505afa158015611a3a573d6000803e3d6000fd5b505050506040513d6020811015611a5057600080fd5b5051905086811015611a935760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b5050505061188d8482612f16565b60608142811015611b73576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081611b8a57fe5b905060200201356001600160a01b03166001600160a01b031614611bf5576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611c3f936001600160a01b0316923492918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110611c5257fe5b60200260200101511015611c975760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611cb957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611d319350909116908a908a908161169857fe5b84600081518110611d3e57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b5051611dc757fe5b611e06828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b5095945050505050565b6000610e07848484613a87565b60608142811015611e75576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611ebf936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b91508682600081518110611ecf57fe5b602002602001015111156113355760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b6001546001600160a01b031681565b6000610e07848484613b77565b60008142811015611f88576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154611fa49089906001600160a01b03168989893089612426565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191945061204192508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d602081101561203a57600080fd5b5051612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156120a757600080fd5b505af11580156120bb573d6000803e3d6000fd5b505050506110ff8483612f16565b804281101561211f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316858560008161213657fe5b905060200201356001600160a01b03166001600160a01b0316146121a1576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b600154604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b15801561220257600080fd5b505af1158015612216573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122479350909116908a908a908161169857fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b505050506040513d60208110156122c157600080fd5b50516122c957fe5b6000868660001981018181106122db57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561234057600080fd5b505afa158015612354573d6000803e3d6000fd5b505050506040513d602081101561236a57600080fd5b505160408051602089810282810182019093528982529293506123ac9290918a918a91829185019084908082843760009201919091525089925061373d915050565b8761185082898960001981018181106123c157fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b600080824281101561247f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60008054612497906001600160a01b03168c8c613262565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561250b57600080fd5b505af115801561251f573d6000803e3d6000fd5b505050506040513d602081101561253557600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050506040513d60408110156125c557600080fd5b508051602090910151909250905060006125df8e8e613c23565b509050806001600160a01b03168e6001600160a01b031614612602578183612605565b82825b90975095508a8710156126495760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b898610156126885760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b505050505097509795505050505050565b6000546001600160a01b031681565b600054606090611124906001600160a01b0316848461312d565b60008060006126fb6000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b0316613262565b905060008761270a578c61270e565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b505050506127c38e8e8e8e8e8e610ce1565b909f909e509c50505050505050505050505050565b60008060008342811015612833576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6128418c8c8c8c8c8c613d01565b6000805492965090945090612860906001600160a01b03168e8e613262565b905061286e8d33838861334d565b61287a8c33838761334d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156128d257600080fd5b505af11580156128e6573d6000803e3d6000fd5b505050506040513d60208110156128fc57600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561296e576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154612989908b906001600160a01b03168b348c8c613d01565b60008054600154939750919550916129af916001600160a01b03908116918e9116613262565b90506129bd8b33838861334d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a0d57600080fd5b505af1158015612a21573d6000803e3d6000fd5b5050600154604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015612a9357600080fd5b505af1158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b5051612ac557fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b5051925034841015612b5f57612b5f33853403612f16565b505096509650969350505050565b60608142811015612bc5576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081612bdc57fe5b905060200201356001600160a01b03166001600160a01b031614612c47576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612c91936001600160a01b0316928b92918b918b918291908501908490808284376000920191909152506135f892505050565b91503482600081518110612ca157fe5b60200260200101511115612ce65760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090612d0857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d3b57600080fd5b505af1158015612d4f573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612d809350909116908a908a908161169857fe5b84600081518110612d8d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612de457600080fd5b505af1158015612df8573d6000803e3d6000fd5b505050506040513d6020811015612e0e57600080fd5b5051612e1657fe5b612e55828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b81600081518110612e6257fe5b6020026020010151341115611e0657611e063383600081518110612e8257fe5b60200260200101513403612f16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612f11908490613f55565b505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612f8057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f43565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612fe2576040519150601f19603f3d011682016040523d82523d6000602084013e612fe7565b606091505b5050905080612f11576040805162461bcd60e51b815260206004820152601c60248201527f536166654554483a204554485f5452414e534645525f4641494c454400000000604482015290519081900360640190fd5b600080841161307d5760405162461bcd60e51b815260040180806020018281038252602b815260200180614504602b913960400191505060405180910390fd5b60008311801561308d5750600082115b6130c85760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b60006130dc856103e563ffffffff61412b16565b905060006130f0828563ffffffff61412b16565b905060006131168361310a886103e863ffffffff61412b16565b9063ffffffff61418416565b905080828161312157fe5b04979650505050505050565b6060600282511015613186576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b81516040519080825280602002602001820160405280156131b1578160200160208202803883390190505b50905082816000815181106131c257fe5b60200260200101818152505060005b600183510381101561325a57600080613214878685815181106131f057fe5b602002602001015187866001018151811061320757fe5b60200260200101516141de565b9150915061323684848151811061322757fe5b6020026020010151838361303d565b84846001018151811061324557fe5b602090810291909101015250506001016131d1565b509392505050565b60008060006132718585613c23565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f5a9f5c3574970dea87031a97b794f46fbe4a0f2c3bf2d6e322a3edfb9ff6d0b5609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526133d5908590613f55565b50505050565b60005b60018351038110156133d5576000808483815181106133f957fe5b602002602001015185846001018151811061341057fe5b60200260200101519150915060006134288383613c23565b509050600087856001018151811061343c57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461346a5782600061346e565b6000835b91509150600060028a5103881061348557886134b6565b6000548a516134b6916001600160a01b03169088908d9060028d019081106134a957fe5b6020026020010151613262565b6000549091506134d0906001600160a01b03168888613262565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561350d576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561357e578181015183820152602001613566565b50505050905090810190601f1680156135ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b5050600190990198506133de975050505050505050565b6060600282511015613651576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815160405190808252806020026020018201604052801561367c578160200160208202803883390190505b509050828160018351038151811061369057fe5b60209081029190910101528151600019015b801561325a576000806136d2878660018603815181106136be57fe5b602002602001015187868151811061320757fe5b915091506136f48484815181106136e557fe5b60200260200101518383613a87565b84600185038151811061370357fe5b60209081029190910101525050600019016136a2565b7f5a9f5c3574970dea87031a97b794f46fbe4a0f2c3bf2d6e322a3edfb9ff6d0b590565b60005b6001835103811015612f115760008084838151811061375b57fe5b602002602001015185846001018151811061377257fe5b602002602001015191509150600061378a8383613c23565b5060008054919250906137a7906001600160a01b03168585613262565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d606081101561381257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461384f578284613852565b83835b915091506138b0828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b95506138bd86838361303d565b945050505050600080856001600160a01b0316886001600160a01b0316146138e7578260006138eb565b6000835b91509150600060028c51038a10613902578a613926565b6000548c51613926916001600160a01b0316908a908f9060028f019081106134a957fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139c95781810151838201526020016139b1565b50505050905090810190601f1680156139f65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613a1857600080fd5b505af1158015613a2c573d6000803e3d6000fd5b50506001909b019a506137409950505050505050505050565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142ac565b6000808411613ac75760405162461bcd60e51b815260040180806020018281038252602c81526020018061437d602c913960400191505060405180910390fd5b600083118015613ad75750600082115b613b125760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b6000613b366103e8613b2a868863ffffffff61412b16565b9063ffffffff61412b16565b90506000613b506103e5613b2a868963ffffffff613a4516565b9050613b6d6001828481613b6057fe5b049063ffffffff61418416565b9695505050505050565b6000808411613bb75760405162461bcd60e51b815260040180806020018281038252602581526020018061443d6025913960400191505060405180910390fd5b600083118015613bc75750600082115b613c025760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b82613c13858463ffffffff61412b16565b81613c1a57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613c775760405162461bcd60e51b81526004018080602001828103825260258152602001806143a96025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613c97578284613c9a565b83835b90925090506001600160a01b038216613cfa576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60008054604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d6020811015613d9b57600080fd5b50516001600160a01b03161415613e4c5760008054604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b505050506040513d6020811015613e4957600080fd5b50505b600080548190613e66906001600160a01b03168b8b6141de565b91509150816000148015613e78575080155b15613e8857879350869250613f48565b6000613e95898484613b77565b9050878111613ee85785811015613edd5760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b889450925082613f46565b6000613ef5898486613b77565b905089811115613f0157fe5b87811015613f405760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b613f67826001600160a01b0316614343565b613fb8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061401457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613fd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614076576040519150601f19603f3d011682016040523d82523d6000602084013e61407b565b606091505b5091509150816140d2576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156133d5578080602001905160208110156140ee57600080fd5b50516133d55760405162461bcd60e51b815260040180806020018281038252602a8152602001806144da602a913960400191505060405180910390fd5b60008261413a57506000611127565b8282028284828161414757fe5b04146111245760405162461bcd60e51b815260040180806020018281038252602181526020018061441c6021913960400191505060405180910390fd5b600082820183811015611124576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060006141ed8585613c23565b5090506000806141fe888888613262565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d606081101561426057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461429a57808261429d565b81815b90999098509650505050505050565b6000818484111561433b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143005781810151838201526020016142e8565b50505050905090810190601f16801561432d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e0757505015159291505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a723158201fc57f3c206b807148048c54750aeb0715a25984ef0fad8c89188e6b04f9a03f64736f6c63430005100032",
|
|
1041
|
+
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getPairInitCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/UniswapV2Router02.sol\":\"UniswapV2Router02\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/UniswapV2Router02.sol\":{\"keccak256\":\"0x2609272f69fc1810c47057c92441a8f811b750b8877bbd242e1bae8ee015afce\",\"urls\":[\"bzz-raw://636b07e241841595709bdd63e8a9f6f26a7e6cee35c7aa7dcdf8dd2c97e46002\",\"dweb:/ipfs/QmZrikCLZz4mMssq6eKaiY7nJWJsENmznLHkYC2jmjTc1D\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol\":{\"keccak256\":\"0x8a4afa0d6b02a342c46834aab92ded1a0c79a91a48571548721dd44274584e2d\",\"urls\":[\"bzz-raw://b9e2e1ae41aabd054346cfb52a9d9394ffad519347362350a0b76a3236184e8e\",\"dweb:/ipfs/Qmd3uS4fijtCkxZXbgBxscJim6F1bkjEiWhJ6jLD3FpdKr\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IUniswapV2Pair.sol\":{\"keccak256\":\"0x022ea15b611c155e236053a484d21223ae6f74da3828379cd8a34a16649b5945\",\"urls\":[\"bzz-raw://41979b601b10b34937f2f5939ab5c5240759c3434e405bf84a69ef94a1612454\",\"dweb:/ipfs/QmbK4y63kjtpbxFgResFo9K2bEhNxcxoTqddpJXeHxwqcT\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IWETH.sol\":{\"keccak256\":\"0x0d1c0eb6392da65457db21f1683864389bce76816bb571d4db94c384c35be072\",\"urls\":[\"bzz-raw://e857758fd1ec75e3a9b38ac648a04c135590ca9d7da31157c122d9580aeb3e15\",\"dweb:/ipfs/QmUww695RBAPEY48A8dmTymMTijh9qzE3N3DFcvHcZSv23\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/SafeETH.sol\":{\"keccak256\":\"0x892161c481fbcda56cbee1af0c4b507251e1aab8b922fbe78b0d21dcf77599a2\",\"urls\":[\"bzz-raw://2192df2eccdc0869f634e032c2aee543e4cae3569ab852fe115c2a5c04617f26\",\"dweb:/ipfs/QmTwx3GTTX6TkTDd6qN76R3JfV768erFKKnKMnT7Qdefw5\"]},\"/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol\":{\"keccak256\":\"0x65f441ee6fb6902adb1dc0c9ebb71f72d661a1a35ee1932308d82c211bbe2e24\",\"urls\":[\"bzz-raw://00c35104c0210321cff79804183194885f27cf7fbfcc2fed5024b87106d66208\",\"dweb:/ipfs/QmXoPXRFQ5Fkg5Up9G7Q7ggFGMxV1YTPB1qMjWDnjMFQjK\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzz-raw://7d8ec81683520c06baeef3f7e06cd82bd6fd5fa611f26857f475f6c829540aff\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
|
|
1042
|
+
"bytecode": "0x608060405234801561001057600080fd5b50604051620045e0380380620045e08339818101604052604081101561003557600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161790915560018054939092169216919091179055614563806200007d6000396000f3fe6080604052600436106101965760003560e01c806385f8c259116100e1578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610b22578063e8e3370014610b95578063f305d71914610c15578063fb3bdb4114610c5b57610196565b8063baa2abde146109f9578063c45a015514610a56578063d06ca61f14610a6b57610196565b8063ad615dec116100bb578063ad615dec146108ea578063af2979eb14610920578063b6f9de951461097357610196565b806385f8c259146107eb5780638803dbee14610821578063ad5c4648146108b957610196565b806338ed1739116101435780635c11d7951161011d5780635c11d79514610635578063791ac947146106cd5780637ff36ab51461076557610196565b806338ed1739146104925780634a25d94a1461052a5780635b0d5984146105c257610196565b80631f00ca74116101745780631f00ca74146103485780632195995c146103ff57806324e43f3d1461047d57610196565b806302751cec146101ac578063054d50d41461021857806318cbafe514610260575b6001546001600160a01b031633146101aa57fe5b005b3480156101b857600080fd5b506101ff600480360360c08110156101cf57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610ce1565b6040805192835260208301919091528051918290030190f35b34801561022457600080fd5b5061024e6004803603606081101561023b57600080fd5b5080359060208101359060400135610dfa565b60408051918252519081900360200190f35b34801561026c57600080fd5b506102f8600480360360a081101561028357600080fd5b8135916020810135918101906060810160408201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460208302840111640100000000831117156102de57600080fd5b91935091506001600160a01b038135169060200135610e0f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033457818101518382015260200161031c565b505050509050019250505060405180910390f35b34801561035457600080fd5b506102f86004803603604081101561036b57600080fd5b8135919081019060408101602082013564010000000081111561038d57600080fd5b82018360208201111561039f57600080fd5b803590602001918460208302840111640100000000831117156103c157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061110a945050505050565b34801561040b57600080fd5b506101ff600480360361016081101561042357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561112d565b34801561048957600080fd5b5061024e61122c565b34801561049e57600080fd5b506102f8600480360360a08110156104b557600080fd5b8135916020810135918101906060810160408201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184602083028401116401000000008311171561051057600080fd5b91935091506001600160a01b03813516906020013561123b565b34801561053657600080fd5b506102f8600480360360a081101561054d57600080fd5b81359160208101359181019060608101604082013564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b91935091506001600160a01b038135169060200135611384565b3480156105ce57600080fd5b5061024e60048036036101408110156105e657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611502565b34801561064157600080fd5b506101aa600480360360a081101561065857600080fd5b81359160208101359181019060608101604082013564010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460208302840111640100000000831117156106b357600080fd5b91935091506001600160a01b0381351690602001356115fc565b3480156106d957600080fd5b506101aa600480360360a08110156106f057600080fd5b81359160208101359181019060608101604082013564010000000081111561071757600080fd5b82018360208201111561072957600080fd5b8035906020019184602083028401116401000000008311171561074b57600080fd5b91935091506001600160a01b038135169060200135611897565b6102f86004803603608081101561077b57600080fd5b8135919081019060408101602082013564010000000081111561079d57600080fd5b8201836020820111156107af57600080fd5b803590602001918460208302840111640100000000831117156107d157600080fd5b91935091506001600160a01b038135169060200135611b1b565b3480156107f757600080fd5b5061024e6004803603606081101561080e57600080fd5b5080359060208101359060400135611e10565b34801561082d57600080fd5b506102f8600480360360a081101561084457600080fd5b81359160208101359181019060608101604082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184602083028401116401000000008311171561089f57600080fd5b91935091506001600160a01b038135169060200135611e1d565b3480156108c557600080fd5b506108ce611f14565b604080516001600160a01b039092168252519081900360200190f35b3480156108f657600080fd5b5061024e6004803603606081101561090d57600080fd5b5080359060208101359060400135611f23565b34801561092c57600080fd5b5061024e600480360360c081101561094357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f30565b6101aa6004803603608081101561098957600080fd5b813591908101906040810160208201356401000000008111156109ab57600080fd5b8201836020820111156109bd57600080fd5b803590602001918460208302840111640100000000831117156109df57600080fd5b91935091506001600160a01b0381351690602001356120c9565b348015610a0557600080fd5b506101ff600480360360e0811015610a1c57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612426565b348015610a6257600080fd5b506108ce612699565b348015610a7757600080fd5b506102f860048036036040811015610a8e57600080fd5b81359190810190604081016020820135640100000000811115610ab057600080fd5b820183602082011115610ac257600080fd5b80359060200191846020830284011164010000000083111715610ae457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a8945050505050565b348015610b2e57600080fd5b506101ff6004803603610140811015610b4657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356126c2565b348015610ba157600080fd5b50610bf76004803603610100811015610bb957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356127d8565b60408051938452602084019290925282820152519081900360600190f35b610bf7600480360360c0811015610c2b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612913565b6102f860048036036080811015610c7157600080fd5b81359190810190604081016020820135640100000000811115610c9357600080fd5b820183602082011115610ca557600080fd5b80359060200191846020830284011164010000000083111715610cc757600080fd5b91935091506001600160a01b038135169060200135612b6d565b6000808242811015610d3a576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154610d56908a906001600160a01b03168a8a8a308a612426565b9093509150610d66898685612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b50505050610dee8583612f16565b50965096945050505050565b6000610e0784848461303d565b949350505050565b60608142811015610e67576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610e8357fe5b905060200201356001600160a01b03166001600160a01b031614610eee576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f38936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110610f4b57fe5b60200260200101511015610f905760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61102286866000818110610fa057fe5b905060200201356001600160a01b0316336110086000809054906101000a90046001600160a01b03168a8a6000818110610fd657fe5b905060200201356001600160a01b03168b8b6001818110610ff357fe5b905060200201356001600160a01b0316613262565b8560008151811061101557fe5b602002602001015161334d565b611061828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506133db915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061108857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110c657600080fd5b505af11580156110da573d6000803e3d6000fd5b505050506110ff84836001855103815181106110f257fe5b6020026020010151612f16565b509695505050505050565b600054606090611124906001600160a01b031684846135f8565b90505b92915050565b6000805481908190611149906001600160a01b03168f8f613262565b9050600087611158578c61115c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506112128f8f8f8f8f8f8f612426565b809450819550505050509b509b9950505050505050505050565b6000611236613719565b905090565b60608142811015611293576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526112dd936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b915086826001845103815181106112f057fe5b602002602001015110156113355760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61134586866000818110610fa057fe5b6110ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b606081428110156113dc576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316868660001981018181106113f857fe5b905060200201356001600160a01b03166001600160a01b031614611463576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526114ad936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b915086826000815181106114bd57fe5b60200260200101511115610f905760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b600080546001548291611523916001600160a01b03918216918f9116613262565b9050600086611532578b611536565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506115eb8d8d8d8d8d8d611f30565b9d9c50505050505050505050505050565b8042811015611652576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6116bb8585600081811061166257fe5b905060200201356001600160a01b0316336116b56000809054906101000a90046001600160a01b03168989600081811061169857fe5b905060200201356001600160a01b03168a8a6001818110610ff357fe5b8a61334d565b6000858560001981018181106116cd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173257600080fd5b505afa158015611746573d6000803e3d6000fd5b505050506040513d602081101561175c57600080fd5b5051604080516020888102828101820190935288825292935061179e92909189918991829185019084908082843760009201919091525088925061373d915050565b8661185082888860001981018181106117b357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b50519063ffffffff613a4516565b101561188d5760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b5050505050505050565b80428110156118ed576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168585600019810181811061190957fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6119848585600081811061166257fe5b6119c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061373d915050565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a2657600080fd5b505afa158015611a3a573d6000803e3d6000fd5b505050506040513d6020811015611a5057600080fd5b5051905086811015611a935760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b5050505061188d8482612f16565b60608142811015611b73576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081611b8a57fe5b905060200201356001600160a01b03166001600160a01b031614611bf5576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611c3f936001600160a01b0316923492918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110611c5257fe5b60200260200101511015611c975760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611cb957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611d319350909116908a908a908161169857fe5b84600081518110611d3e57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b5051611dc757fe5b611e06828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b5095945050505050565b6000610e07848484613a87565b60608142811015611e75576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611ebf936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b91508682600081518110611ecf57fe5b602002602001015111156113355760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b6001546001600160a01b031681565b6000610e07848484613b77565b60008142811015611f88576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154611fa49089906001600160a01b03168989893089612426565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191945061204192508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d602081101561203a57600080fd5b5051612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156120a757600080fd5b505af11580156120bb573d6000803e3d6000fd5b505050506110ff8483612f16565b804281101561211f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316858560008161213657fe5b905060200201356001600160a01b03166001600160a01b0316146121a1576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b600154604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b15801561220257600080fd5b505af1158015612216573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122479350909116908a908a908161169857fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b505050506040513d60208110156122c157600080fd5b50516122c957fe5b6000868660001981018181106122db57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561234057600080fd5b505afa158015612354573d6000803e3d6000fd5b505050506040513d602081101561236a57600080fd5b505160408051602089810282810182019093528982529293506123ac9290918a918a91829185019084908082843760009201919091525089925061373d915050565b8761185082898960001981018181106123c157fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b600080824281101561247f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60008054612497906001600160a01b03168c8c613262565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561250b57600080fd5b505af115801561251f573d6000803e3d6000fd5b505050506040513d602081101561253557600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050506040513d60408110156125c557600080fd5b508051602090910151909250905060006125df8e8e613c23565b509050806001600160a01b03168e6001600160a01b031614612602578183612605565b82825b90975095508a8710156126495760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b898610156126885760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b505050505097509795505050505050565b6000546001600160a01b031681565b600054606090611124906001600160a01b0316848461312d565b60008060006126fb6000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b0316613262565b905060008761270a578c61270e565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b505050506127c38e8e8e8e8e8e610ce1565b909f909e509c50505050505050505050505050565b60008060008342811015612833576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6128418c8c8c8c8c8c613d01565b6000805492965090945090612860906001600160a01b03168e8e613262565b905061286e8d33838861334d565b61287a8c33838761334d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156128d257600080fd5b505af11580156128e6573d6000803e3d6000fd5b505050506040513d60208110156128fc57600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561296e576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154612989908b906001600160a01b03168b348c8c613d01565b60008054600154939750919550916129af916001600160a01b03908116918e9116613262565b90506129bd8b33838861334d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a0d57600080fd5b505af1158015612a21573d6000803e3d6000fd5b5050600154604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015612a9357600080fd5b505af1158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b5051612ac557fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b5051925034841015612b5f57612b5f33853403612f16565b505096509650969350505050565b60608142811015612bc5576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081612bdc57fe5b905060200201356001600160a01b03166001600160a01b031614612c47576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612c91936001600160a01b0316928b92918b918b918291908501908490808284376000920191909152506135f892505050565b91503482600081518110612ca157fe5b60200260200101511115612ce65760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090612d0857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d3b57600080fd5b505af1158015612d4f573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612d809350909116908a908a908161169857fe5b84600081518110612d8d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612de457600080fd5b505af1158015612df8573d6000803e3d6000fd5b505050506040513d6020811015612e0e57600080fd5b5051612e1657fe5b612e55828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b81600081518110612e6257fe5b6020026020010151341115611e0657611e063383600081518110612e8257fe5b60200260200101513403612f16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612f11908490613f55565b505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612f8057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f43565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612fe2576040519150601f19603f3d011682016040523d82523d6000602084013e612fe7565b606091505b5050905080612f11576040805162461bcd60e51b815260206004820152601c60248201527f536166654554483a204554485f5452414e534645525f4641494c454400000000604482015290519081900360640190fd5b600080841161307d5760405162461bcd60e51b815260040180806020018281038252602b815260200180614504602b913960400191505060405180910390fd5b60008311801561308d5750600082115b6130c85760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b60006130dc856103e563ffffffff61412b16565b905060006130f0828563ffffffff61412b16565b905060006131168361310a886103e863ffffffff61412b16565b9063ffffffff61418416565b905080828161312157fe5b04979650505050505050565b6060600282511015613186576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b81516040519080825280602002602001820160405280156131b1578160200160208202803883390190505b50905082816000815181106131c257fe5b60200260200101818152505060005b600183510381101561325a57600080613214878685815181106131f057fe5b602002602001015187866001018151811061320757fe5b60200260200101516141de565b9150915061323684848151811061322757fe5b6020026020010151838361303d565b84846001018151811061324557fe5b602090810291909101015250506001016131d1565b509392505050565b60008060006132718585613c23565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fbdc91e06b26dfbdd4f1900ed9083efead94ec924102a237f7b0edf260a1d3a99609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526133d5908590613f55565b50505050565b60005b60018351038110156133d5576000808483815181106133f957fe5b602002602001015185846001018151811061341057fe5b60200260200101519150915060006134288383613c23565b509050600087856001018151811061343c57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461346a5782600061346e565b6000835b91509150600060028a5103881061348557886134b6565b6000548a516134b6916001600160a01b03169088908d9060028d019081106134a957fe5b6020026020010151613262565b6000549091506134d0906001600160a01b03168888613262565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561350d576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561357e578181015183820152602001613566565b50505050905090810190601f1680156135ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b5050600190990198506133de975050505050505050565b6060600282511015613651576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815160405190808252806020026020018201604052801561367c578160200160208202803883390190505b509050828160018351038151811061369057fe5b60209081029190910101528151600019015b801561325a576000806136d2878660018603815181106136be57fe5b602002602001015187868151811061320757fe5b915091506136f48484815181106136e557fe5b60200260200101518383613a87565b84600185038151811061370357fe5b60209081029190910101525050600019016136a2565b7fbdc91e06b26dfbdd4f1900ed9083efead94ec924102a237f7b0edf260a1d3a9990565b60005b6001835103811015612f115760008084838151811061375b57fe5b602002602001015185846001018151811061377257fe5b602002602001015191509150600061378a8383613c23565b5060008054919250906137a7906001600160a01b03168585613262565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d606081101561381257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461384f578284613852565b83835b915091506138b0828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b95506138bd86838361303d565b945050505050600080856001600160a01b0316886001600160a01b0316146138e7578260006138eb565b6000835b91509150600060028c51038a10613902578a613926565b6000548c51613926916001600160a01b0316908a908f9060028f019081106134a957fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139c95781810151838201526020016139b1565b50505050905090810190601f1680156139f65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613a1857600080fd5b505af1158015613a2c573d6000803e3d6000fd5b50506001909b019a506137409950505050505050505050565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142ac565b6000808411613ac75760405162461bcd60e51b815260040180806020018281038252602c81526020018061437d602c913960400191505060405180910390fd5b600083118015613ad75750600082115b613b125760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b6000613b366103e8613b2a868863ffffffff61412b16565b9063ffffffff61412b16565b90506000613b506103e5613b2a868963ffffffff613a4516565b9050613b6d6001828481613b6057fe5b049063ffffffff61418416565b9695505050505050565b6000808411613bb75760405162461bcd60e51b815260040180806020018281038252602581526020018061443d6025913960400191505060405180910390fd5b600083118015613bc75750600082115b613c025760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b82613c13858463ffffffff61412b16565b81613c1a57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613c775760405162461bcd60e51b81526004018080602001828103825260258152602001806143a96025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613c97578284613c9a565b83835b90925090506001600160a01b038216613cfa576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60008054604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d6020811015613d9b57600080fd5b50516001600160a01b03161415613e4c5760008054604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b505050506040513d6020811015613e4957600080fd5b50505b600080548190613e66906001600160a01b03168b8b6141de565b91509150816000148015613e78575080155b15613e8857879350869250613f48565b6000613e95898484613b77565b9050878111613ee85785811015613edd5760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b889450925082613f46565b6000613ef5898486613b77565b905089811115613f0157fe5b87811015613f405760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b613f67826001600160a01b0316614343565b613fb8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061401457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613fd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614076576040519150601f19603f3d011682016040523d82523d6000602084013e61407b565b606091505b5091509150816140d2576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156133d5578080602001905160208110156140ee57600080fd5b50516133d55760405162461bcd60e51b815260040180806020018281038252602a8152602001806144da602a913960400191505060405180910390fd5b60008261413a57506000611127565b8282028284828161414757fe5b04146111245760405162461bcd60e51b815260040180806020018281038252602181526020018061441c6021913960400191505060405180910390fd5b600082820183811015611124576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060006141ed8585613c23565b5090506000806141fe888888613262565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d606081101561426057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461429a57808261429d565b81815b90999098509650505050505050565b6000818484111561433b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143005781810151838201526020016142e8565b50505050905090810190601f16801561432d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e0757505015159291505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a72315820c8cb5124cd080d1fc206f69152e7e5336f8f1c3dd488e7b57f47386787c34c9b64736f6c63430005100032",
|
|
1043
|
+
"deployedBytecode": "0x6080604052600436106101965760003560e01c806385f8c259116100e1578063baa2abde1161008a578063ded9382a11610064578063ded9382a14610b22578063e8e3370014610b95578063f305d71914610c15578063fb3bdb4114610c5b57610196565b8063baa2abde146109f9578063c45a015514610a56578063d06ca61f14610a6b57610196565b8063ad615dec116100bb578063ad615dec146108ea578063af2979eb14610920578063b6f9de951461097357610196565b806385f8c259146107eb5780638803dbee14610821578063ad5c4648146108b957610196565b806338ed1739116101435780635c11d7951161011d5780635c11d79514610635578063791ac947146106cd5780637ff36ab51461076557610196565b806338ed1739146104925780634a25d94a1461052a5780635b0d5984146105c257610196565b80631f00ca74116101745780631f00ca74146103485780632195995c146103ff57806324e43f3d1461047d57610196565b806302751cec146101ac578063054d50d41461021857806318cbafe514610260575b6001546001600160a01b031633146101aa57fe5b005b3480156101b857600080fd5b506101ff600480360360c08110156101cf57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610ce1565b6040805192835260208301919091528051918290030190f35b34801561022457600080fd5b5061024e6004803603606081101561023b57600080fd5b5080359060208101359060400135610dfa565b60408051918252519081900360200190f35b34801561026c57600080fd5b506102f8600480360360a081101561028357600080fd5b8135916020810135918101906060810160408201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460208302840111640100000000831117156102de57600080fd5b91935091506001600160a01b038135169060200135610e0f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033457818101518382015260200161031c565b505050509050019250505060405180910390f35b34801561035457600080fd5b506102f86004803603604081101561036b57600080fd5b8135919081019060408101602082013564010000000081111561038d57600080fd5b82018360208201111561039f57600080fd5b803590602001918460208302840111640100000000831117156103c157600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061110a945050505050565b34801561040b57600080fd5b506101ff600480360361016081101561042357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561112d565b34801561048957600080fd5b5061024e61122c565b34801561049e57600080fd5b506102f8600480360360a08110156104b557600080fd5b8135916020810135918101906060810160408201356401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184602083028401116401000000008311171561051057600080fd5b91935091506001600160a01b03813516906020013561123b565b34801561053657600080fd5b506102f8600480360360a081101561054d57600080fd5b81359160208101359181019060608101604082013564010000000081111561057457600080fd5b82018360208201111561058657600080fd5b803590602001918460208302840111640100000000831117156105a857600080fd5b91935091506001600160a01b038135169060200135611384565b3480156105ce57600080fd5b5061024e60048036036101408110156105e657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611502565b34801561064157600080fd5b506101aa600480360360a081101561065857600080fd5b81359160208101359181019060608101604082013564010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460208302840111640100000000831117156106b357600080fd5b91935091506001600160a01b0381351690602001356115fc565b3480156106d957600080fd5b506101aa600480360360a08110156106f057600080fd5b81359160208101359181019060608101604082013564010000000081111561071757600080fd5b82018360208201111561072957600080fd5b8035906020019184602083028401116401000000008311171561074b57600080fd5b91935091506001600160a01b038135169060200135611897565b6102f86004803603608081101561077b57600080fd5b8135919081019060408101602082013564010000000081111561079d57600080fd5b8201836020820111156107af57600080fd5b803590602001918460208302840111640100000000831117156107d157600080fd5b91935091506001600160a01b038135169060200135611b1b565b3480156107f757600080fd5b5061024e6004803603606081101561080e57600080fd5b5080359060208101359060400135611e10565b34801561082d57600080fd5b506102f8600480360360a081101561084457600080fd5b81359160208101359181019060608101604082013564010000000081111561086b57600080fd5b82018360208201111561087d57600080fd5b8035906020019184602083028401116401000000008311171561089f57600080fd5b91935091506001600160a01b038135169060200135611e1d565b3480156108c557600080fd5b506108ce611f14565b604080516001600160a01b039092168252519081900360200190f35b3480156108f657600080fd5b5061024e6004803603606081101561090d57600080fd5b5080359060208101359060400135611f23565b34801561092c57600080fd5b5061024e600480360360c081101561094357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611f30565b6101aa6004803603608081101561098957600080fd5b813591908101906040810160208201356401000000008111156109ab57600080fd5b8201836020820111156109bd57600080fd5b803590602001918460208302840111640100000000831117156109df57600080fd5b91935091506001600160a01b0381351690602001356120c9565b348015610a0557600080fd5b506101ff600480360360e0811015610a1c57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612426565b348015610a6257600080fd5b506108ce612699565b348015610a7757600080fd5b506102f860048036036040811015610a8e57600080fd5b81359190810190604081016020820135640100000000811115610ab057600080fd5b820183602082011115610ac257600080fd5b80359060200191846020830284011164010000000083111715610ae457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506126a8945050505050565b348015610b2e57600080fd5b506101ff6004803603610140811015610b4657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356126c2565b348015610ba157600080fd5b50610bf76004803603610100811015610bb957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356127d8565b60408051938452602084019290925282820152519081900360600190f35b610bf7600480360360c0811015610c2b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612913565b6102f860048036036080811015610c7157600080fd5b81359190810190604081016020820135640100000000811115610c9357600080fd5b820183602082011115610ca557600080fd5b80359060200191846020830284011164010000000083111715610cc757600080fd5b91935091506001600160a01b038135169060200135612b6d565b6000808242811015610d3a576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154610d56908a906001600160a01b03168a8a8a308a612426565b9093509150610d66898685612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b50505050610dee8583612f16565b50965096945050505050565b6000610e0784848461303d565b949350505050565b60608142811015610e67576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b031686866000198101818110610e8357fe5b905060200201356001600160a01b03166001600160a01b031614610eee576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f38936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110610f4b57fe5b60200260200101511015610f905760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61102286866000818110610fa057fe5b905060200201356001600160a01b0316336110086000809054906101000a90046001600160a01b03168a8a6000818110610fd657fe5b905060200201356001600160a01b03168b8b6001818110610ff357fe5b905060200201356001600160a01b0316613262565b8560008151811061101557fe5b602002602001015161334d565b611061828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506133db915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061108857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156110c657600080fd5b505af11580156110da573d6000803e3d6000fd5b505050506110ff84836001855103815181106110f257fe5b6020026020010151612f16565b509695505050505050565b600054606090611124906001600160a01b031684846135f8565b90505b92915050565b6000805481908190611149906001600160a01b03168f8f613262565b9050600087611158578c61115c565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156111eb57600080fd5b505af11580156111ff573d6000803e3d6000fd5b505050506112128f8f8f8f8f8f8f612426565b809450819550505050509b509b9950505050505050505050565b6000611236613719565b905090565b60608142811015611293576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526112dd936001600160a01b0316928c92918b918b9182919085019084908082843760009201919091525061312d92505050565b915086826001845103815181106112f057fe5b602002602001015110156113355760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b61134586866000818110610fa057fe5b6110ff828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b606081428110156113dc576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316868660001981018181106113f857fe5b905060200201356001600160a01b03166001600160a01b031614611463576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526114ad936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b915086826000815181106114bd57fe5b60200260200101511115610f905760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b600080546001548291611523916001600160a01b03918216918f9116613262565b9050600086611532578b611536565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156115c557600080fd5b505af11580156115d9573d6000803e3d6000fd5b505050506115eb8d8d8d8d8d8d611f30565b9d9c50505050505050505050505050565b8042811015611652576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6116bb8585600081811061166257fe5b905060200201356001600160a01b0316336116b56000809054906101000a90046001600160a01b03168989600081811061169857fe5b905060200201356001600160a01b03168a8a6001818110610ff357fe5b8a61334d565b6000858560001981018181106116cd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561173257600080fd5b505afa158015611746573d6000803e3d6000fd5b505050506040513d602081101561175c57600080fd5b5051604080516020888102828101820190935288825292935061179e92909189918991829185019084908082843760009201919091525088925061373d915050565b8661185082888860001981018181106117b357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d602081101561184257600080fd5b50519063ffffffff613a4516565b101561188d5760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b5050505050505050565b80428110156118ed576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168585600019810181811061190957fe5b905060200201356001600160a01b03166001600160a01b031614611974576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6119848585600081811061166257fe5b6119c285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061373d915050565b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a2657600080fd5b505afa158015611a3a573d6000803e3d6000fd5b505050506040513d6020811015611a5057600080fd5b5051905086811015611a935760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015611af957600080fd5b505af1158015611b0d573d6000803e3d6000fd5b5050505061188d8482612f16565b60608142811015611b73576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081611b8a57fe5b905060200201356001600160a01b03166001600160a01b031614611bf5576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611c3f936001600160a01b0316923492918b918b9182919085019084908082843760009201919091525061312d92505050565b91508682600184510381518110611c5257fe5b60200260200101511015611c975760405162461bcd60e51b815260040180806020018281038252602b8152602001806144af602b913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611cb957fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611cec57600080fd5b505af1158015611d00573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611d319350909116908a908a908161169857fe5b84600081518110611d3e57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b5051611dc757fe5b611e06828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b5095945050505050565b6000610e07848484613a87565b60608142811015611e75576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611ebf936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506135f892505050565b91508682600081518110611ecf57fe5b602002602001015111156113355760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b6001546001600160a01b031681565b6000610e07848484613b77565b60008142811015611f88576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154611fa49089906001600160a01b03168989893089612426565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191945061204192508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b15801561201057600080fd5b505afa158015612024573d6000803e3d6000fd5b505050506040513d602081101561203a57600080fd5b5051612e91565b600154604080517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156120a757600080fd5b505af11580156120bb573d6000803e3d6000fd5b505050506110ff8483612f16565b804281101561211f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b0316858560008161213657fe5b905060200201356001600160a01b03166001600160a01b0316146121a1576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b600154604080517fd0e30db0000000000000000000000000000000000000000000000000000000008152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b15801561220257600080fd5b505af1158015612216573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122479350909116908a908a908161169857fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561229757600080fd5b505af11580156122ab573d6000803e3d6000fd5b505050506040513d60208110156122c157600080fd5b50516122c957fe5b6000868660001981018181106122db57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561234057600080fd5b505afa158015612354573d6000803e3d6000fd5b505050506040513d602081101561236a57600080fd5b505160408051602089810282810182019093528982529293506123ac9290918a918a91829185019084908082843760009201919091525089925061373d915050565b8761185082898960001981018181106123c157fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b600080824281101561247f576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b60008054612497906001600160a01b03168c8c613262565b604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b15801561250b57600080fd5b505af115801561251f573d6000803e3d6000fd5b505050506040513d602081101561253557600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561259b57600080fd5b505af11580156125af573d6000803e3d6000fd5b505050506040513d60408110156125c557600080fd5b508051602090910151909250905060006125df8e8e613c23565b509050806001600160a01b03168e6001600160a01b031614612602578183612605565b82825b90975095508a8710156126495760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b898610156126885760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b505050505097509795505050505050565b6000546001600160a01b031681565b600054606090611124906001600160a01b0316848461312d565b60008060006126fb6000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b0316613262565b905060008761270a578c61270e565b6000195b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b505050506127c38e8e8e8e8e8e610ce1565b909f909e509c50505050505050505050505050565b60008060008342811015612833576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6128418c8c8c8c8c8c613d01565b6000805492965090945090612860906001600160a01b03168e8e613262565b905061286e8d33838861334d565b61287a8c33838761334d565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156128d257600080fd5b505af11580156128e6573d6000803e3d6000fd5b505050506040513d60208110156128fc57600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561296e576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b600154612989908b906001600160a01b03168b348c8c613d01565b60008054600154939750919550916129af916001600160a01b03908116918e9116613262565b90506129bd8b33838861334d565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a0d57600080fd5b505af1158015612a21573d6000803e3d6000fd5b5050600154604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015612a9357600080fd5b505af1158015612aa7573d6000803e3d6000fd5b505050506040513d6020811015612abd57600080fd5b5051612ac557fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015612b1d57600080fd5b505af1158015612b31573d6000803e3d6000fd5b505050506040513d6020811015612b4757600080fd5b5051925034841015612b5f57612b5f33853403612f16565b505096509650969350505050565b60608142811015612bc5576040805162461bcd60e51b815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6001546001600160a01b03168686600081612bdc57fe5b905060200201356001600160a01b03166001600160a01b031614612c47576040805162461bcd60e51b815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612c91936001600160a01b0316928b92918b918b918291908501908490808284376000920191909152506135f892505050565b91503482600081518110612ca157fe5b60200260200101511115612ce65760405162461bcd60e51b81526004018080602001828103825260278152602001806144626027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090612d0857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d3b57600080fd5b505af1158015612d4f573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612d809350909116908a908a908161169857fe5b84600081518110612d8d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612de457600080fd5b505af1158015612df8573d6000803e3d6000fd5b505050506040513d6020811015612e0e57600080fd5b5051612e1657fe5b612e55828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506133db915050565b81600081518110612e6257fe5b6020026020010151341115611e0657611e063383600081518110612e8257fe5b60200260200101513403612f16565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612f11908490613f55565b505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612f8057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f43565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612fe2576040519150601f19603f3d011682016040523d82523d6000602084013e612fe7565b606091505b5050905080612f11576040805162461bcd60e51b815260206004820152601c60248201527f536166654554483a204554485f5452414e534645525f4641494c454400000000604482015290519081900360640190fd5b600080841161307d5760405162461bcd60e51b815260040180806020018281038252602b815260200180614504602b913960400191505060405180910390fd5b60008311801561308d5750600082115b6130c85760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b60006130dc856103e563ffffffff61412b16565b905060006130f0828563ffffffff61412b16565b905060006131168361310a886103e863ffffffff61412b16565b9063ffffffff61418416565b905080828161312157fe5b04979650505050505050565b6060600282511015613186576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b81516040519080825280602002602001820160405280156131b1578160200160208202803883390190505b50905082816000815181106131c257fe5b60200260200101818152505060005b600183510381101561325a57600080613214878685815181106131f057fe5b602002602001015187866001018151811061320757fe5b60200260200101516141de565b9150915061323684848151811061322757fe5b6020026020010151838361303d565b84846001018151811061324557fe5b602090810291909101015250506001016131d1565b509392505050565b60008060006132718585613c23565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fbdc91e06b26dfbdd4f1900ed9083efead94ec924102a237f7b0edf260a1d3a99609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526133d5908590613f55565b50505050565b60005b60018351038110156133d5576000808483815181106133f957fe5b602002602001015185846001018151811061341057fe5b60200260200101519150915060006134288383613c23565b509050600087856001018151811061343c57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461346a5782600061346e565b6000835b91509150600060028a5103881061348557886134b6565b6000548a516134b6916001600160a01b03169088908d9060028d019081106134a957fe5b6020026020010151613262565b6000549091506134d0906001600160a01b03168888613262565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561350d576020820181803883390190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561357e578181015183820152602001613566565b50505050905090810190601f1680156135ab5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156135cd57600080fd5b505af11580156135e1573d6000803e3d6000fd5b5050600190990198506133de975050505050505050565b6060600282511015613651576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815160405190808252806020026020018201604052801561367c578160200160208202803883390190505b509050828160018351038151811061369057fe5b60209081029190910101528151600019015b801561325a576000806136d2878660018603815181106136be57fe5b602002602001015187868151811061320757fe5b915091506136f48484815181106136e557fe5b60200260200101518383613a87565b84600185038151811061370357fe5b60209081029190910101525050600019016136a2565b7fbdc91e06b26dfbdd4f1900ed9083efead94ec924102a237f7b0edf260a1d3a9990565b60005b6001835103811015612f115760008084838151811061375b57fe5b602002602001015185846001018151811061377257fe5b602002602001015191509150600061378a8383613c23565b5060008054919250906137a7906001600160a01b03168585613262565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d606081101561381257600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a81169089161461384f578284613852565b83835b915091506138b0828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561181857600080fd5b95506138bd86838361303d565b945050505050600080856001600160a01b0316886001600160a01b0316146138e7578260006138eb565b6000835b91509150600060028c51038a10613902578a613926565b6000548c51613926916001600160a01b0316908a908f9060028f019081106134a957fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156139c95781810151838201526020016139b1565b50505050905090810190601f1680156139f65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613a1857600080fd5b505af1158015613a2c573d6000803e3d6000fd5b50506001909b019a506137409950505050505050505050565b600061112483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506142ac565b6000808411613ac75760405162461bcd60e51b815260040180806020018281038252602c81526020018061437d602c913960400191505060405180910390fd5b600083118015613ad75750600082115b613b125760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b6000613b366103e8613b2a868863ffffffff61412b16565b9063ffffffff61412b16565b90506000613b506103e5613b2a868963ffffffff613a4516565b9050613b6d6001828481613b6057fe5b049063ffffffff61418416565b9695505050505050565b6000808411613bb75760405162461bcd60e51b815260040180806020018281038252602581526020018061443d6025913960400191505060405180910390fd5b600083118015613bc75750600082115b613c025760405162461bcd60e51b81526004018080602001828103825260288152602001806143f46028913960400191505060405180910390fd5b82613c13858463ffffffff61412b16565b81613c1a57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613c775760405162461bcd60e51b81526004018080602001828103825260258152602001806143a96025913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613c97578284613c9a565b83835b90925090506001600160a01b038216613cfa576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b60008054604080517fe6a439050000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b158015613d7157600080fd5b505afa158015613d85573d6000803e3d6000fd5b505050506040513d6020811015613d9b57600080fd5b50516001600160a01b03161415613e4c5760008054604080517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b158015613e1f57600080fd5b505af1158015613e33573d6000803e3d6000fd5b505050506040513d6020811015613e4957600080fd5b50505b600080548190613e66906001600160a01b03168b8b6141de565b91509150816000148015613e78575080155b15613e8857879350869250613f48565b6000613e95898484613b77565b9050878111613ee85785811015613edd5760405162461bcd60e51b81526004018080602001828103825260268152602001806143ce6026913960400191505060405180910390fd5b889450925082613f46565b6000613ef5898486613b77565b905089811115613f0157fe5b87811015613f405760405162461bcd60e51b81526004018080602001828103825260268152602001806144896026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b613f67826001600160a01b0316614343565b613fb8576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061401457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613fd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614076576040519150601f19603f3d011682016040523d82523d6000602084013e61407b565b606091505b5091509150816140d2576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156133d5578080602001905160208110156140ee57600080fd5b50516133d55760405162461bcd60e51b815260040180806020018281038252602a8152602001806144da602a913960400191505060405180910390fd5b60008261413a57506000611127565b8282028284828161414757fe5b04146111245760405162461bcd60e51b815260040180806020018281038252602181526020018061441c6021913960400191505060405180910390fd5b600082820183811015611124576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060006141ed8585613c23565b5090506000806141fe888888613262565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561423657600080fd5b505afa15801561424a573d6000803e3d6000fd5b505050506040513d606081101561426057600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461429a57808261429d565b81815b90999098509650505050505050565b6000818484111561433b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143005781810151838201526020016142e8565b50505050905090810190601f16801561432d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e0757505015159291505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a265627a7a72315820c8cb5124cd080d1fc206f69152e7e5336f8f1c3dd488e7b57f47386787c34c9b64736f6c63430005100032",
|
|
1044
1044
|
"sourceMap": "330:18860:39:-;;;576:109;8:9:-1;5:2;;;30:1;27;20:12;5:2;576:109:39;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;576:109:39;;;;;;;638:7;:18;;-1:-1:-1;;;;;638:18:39;;;-1:-1:-1;;;;;;638:18:39;;;;;;;;666:12;;;;;;;;;;;;;;330:18860;;;;;;",
|
|
1045
1045
|
"deployedSourceMap": "330:18860:39:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;750:4;;-1:-1:-1;;;;;750:4:39;736:10;:18;729:26;;;;330:18860;3725:632;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3725:632:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3725:632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14596:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14596:209:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14596:209:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10451:875;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10451:875:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;10451:875:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10451:875:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10451:875:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10451:875:39;;-1:-1:-1;10451:875:39;-1:-1:-1;;;;;;10451:875:39;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10451:875:39;;;;;;;;;;;;;;;;;15231:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15231:200:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15231:200:39;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15231:200:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15231:200:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15231:200:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15231:200:39;;-1:-1:-1;15231:200:39;;-1:-1:-1;;;;;15231:200:39:i;4363:836::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4363:836:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4363:836:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;823:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;823:125:39;;;:::i;7591:661::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7591:661:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7591:661:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7591:661:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7591:661:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7591:661:39;;-1:-1:-1;7591:661:39;-1:-1:-1;;;;;;7591:661:39;;;;;;;;:::i;9592:853::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9592:853:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9592:853:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;9592:853:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9592:853:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9592:853:39;;-1:-1:-1;9592:853:39;-1:-1:-1;;;;;;9592:853:39;;;;;;;;:::i;6763:822::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6763:822:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6763:822:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12125:684::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12125:684:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12125:684:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12125:684:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12125:684:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12125:684:39;;-1:-1:-1;12125:684:39;-1:-1:-1;;;;;;12125:684:39;;;;;;;;:::i;13603:777::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13603:777:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;13603:777:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13603:777:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13603:777:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13603:777:39;;-1:-1:-1;13603:777:39;-1:-1:-1;;;;;;13603:777:39;;;;;;;;:::i;8903:683::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8903:683:39;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8903:683:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8903:683:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8903:683:39;;-1:-1:-1;8903:683:39;-1:-1:-1;;;;;;8903:683:39;;;;;;;;:::i;14811:208::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14811:208:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14811:208:39;;;;;;;;;;;;:::i;8258:639::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8258:639:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8258:639:39;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;8258:639:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8258:639:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8258:639:39;;-1:-1:-1;8258:639:39;-1:-1:-1;;;;;;8258:639:39;;;;;;;;:::i;421:19::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;421:19:39;;;:::i;:::-;;;;-1:-1:-1;;;;;421:19:39;;;;;;;;;;;;;;14421:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14421:169:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14421:169:39;;;;;;;;;;;;:::i;6098:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6098:659:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6098:659:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12815:782::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;12815:782:39;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12815:782:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12815:782:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12815:782:39;;-1:-1:-1;12815:782:39;-1:-1:-1;;;;;;12815:782:39;;;;;;;;:::i;2887:832::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2887:832:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2887:832:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;393:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;393:22:39;;;:::i;15025:200::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15025:200:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15025:200:39;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15025:200:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15025:200:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15025:200:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15025:200:39;;-1:-1:-1;15025:200:39;;-1:-1:-1;;;;;15025:200:39:i;5205:817::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5205:817:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;5205:817:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;954:910::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;954:910:39;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;954:910:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1870:1011;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;1870:1011:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11332:787::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11332:787:39;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11332:787:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11332:787:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11332:787:39;;-1:-1:-1;11332:787:39;-1:-1:-1;;;;;;11332:787:39;;;;;;;;:::i;3725:632::-;3938:16;3956:14;3919:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;4057:4;;4009:188;;4038:5;;-1:-1:-1;;;;;4057:4:39;4075:9;4098:14;4126:12;4160:4;4179:8;4009:15;:188::i;:::-;3982:215;;-1:-1:-1;3982:215:39;-1:-1:-1;4207:54:39;4237:5;4245:2;3982:215;4207:22;:54::i;:::-;4277:4;;4271:31;;;;;;;;;;;;;;-1:-1:-1;;;;;4277:4:39;;;;4271:20;;:31;;;;;4277:4;;4271:31;;;;;;;;4277:4;;4271:31;;;5:2:-1;;;;30:1;27;20:12;5:2;4271:31:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4271:31:39;;;;4312:38;4336:2;4340:9;4312:23;:38::i;:::-;3725:632;;;;;;;;;;:::o;14596:209::-;14699:14;14736:62;14766:8;14776:9;14787:10;14736:29;:62::i;:::-;14729:69;14596:209;-1:-1:-1;;;;14596:209:39:o;10451:875::-;10673:21;10646:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;10739:4;;-1:-1:-1;;;;;10739:4:39;10714;;-1:-1:-1;;10719:15:39;;10714:21;;;;;;;;;;;;;-1:-1:-1;;;;;10714:21:39;-1:-1:-1;;;;;10714:29:39;;10706:71;;;;;-1:-1:-1;;;10706:71:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;10828:7;;10797:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10828:7:39;;10837:8;;10797:55;10847:4;;;;;;10797:55;;;;10847:4;;10797:55;10847:4;10797:55;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10797:30:39;;-1:-1:-1;;;10797:55:39:i;:::-;10787:65;;10901:12;10870:7;10895:1;10878:7;:14;:18;10870:27;;;;;;;;;;;;;;:43;;10862:99;;;;-1:-1:-1;;;10862:99:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10971:178;11018:4;;11023:1;11018:7;;;;;;;;;;;;;-1:-1:-1;;;;;11018:7:39;11040:10;11064:51;11089:7;;;;;;;;;-1:-1:-1;;;;;11089:7:39;11098:4;;11103:1;11098:7;;;;;;;;;;;;;-1:-1:-1;;;;;11098:7:39;11107:4;;11112:1;11107:7;;;;;;;;;;;;;-1:-1:-1;;;;;11107:7:39;11064:24;:51::i;:::-;11129:7;11137:1;11129:10;;;;;;;;;;;;;;10971:26;:178::i;:::-;11159:35;11165:7;11174:4;;11159:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11188:4:39;;-1:-1:-1;11159:5:39;;-1:-1:-1;;11159:35:39:i;:::-;11210:4;;11233:14;;-1:-1:-1;;;;;11210:4:39;;;;11204:20;;11225:7;;-1:-1:-1;;11233:18:39;;;11225:27;;;;;;;;;;;;11204:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11204:49:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11204:49:39;;;;11263:56;11287:2;11291:7;11316:1;11299:7;:14;:18;11291:27;;;;;;;;;;;;;;11263:23;:56::i;:::-;10451:875;;;;;;;;;:::o;15231:200::-;15399:7;;15325:21;;15369:55;;-1:-1:-1;;;;;15399:7:39;15408:9;15419:4;15369:29;:55::i;:::-;15362:62;;15231:200;;;;;:::o;4363:836::-;4643:12;4721:7;;4643:12;;;;4696:49;;-1:-1:-1;;;;;4721:7:39;4730:6;4738;4696:24;:49::i;:::-;4681:64;;4755:10;4768;:33;;4792:9;4768:33;;;-1:-1:-1;;4768:33:39;4812:174;;;;;;4853:10;4812:174;;;;4885:4;4812:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4755:46;;-1:-1:-1;;;;;;4812:27:39;;;;;:174;;;;;-1:-1:-1;;4812:174:39;;;;;;;;-1:-1:-1;4812:27:39;:174;;;5:2:-1;;;;30:1;27;20:12;5:2;4812:174:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4812:174:39;;;;5018;5047:6;5067;5087:9;5110:10;5134;5158:2;5174:8;5018:15;:174::i;:::-;4997:195;;;;;;;;4363:836;;;;;;;;;;;;;;;;:::o;823:125::-;877:7;903:38;:36;:38::i;:::-;896:45;;823:125;:::o;7591:661::-;7816:21;7789:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;7890:7;;7859:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7890:7:39;;7899:8;;7859:55;7909:4;;;;;;7859:55;;;;7909:4;;7859:55;7909:4;7859:55;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;7859:30:39;;-1:-1:-1;;;7859:55:39:i;:::-;7849:65;;7963:12;7932:7;7957:1;7940:7;:14;:18;7932:27;;;;;;;;;;;;;;:43;;7924:99;;;;-1:-1:-1;;;7924:99:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8033:178;8080:4;;8085:1;8080:7;;;;;;8033:178;8221:24;8227:7;8236:4;;8221:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8242:2:39;;-1:-1:-1;8221:5:39;;-1:-1:-1;;8221:24:39:i;9592:853::-;9814:21;9787:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;9880:4;;-1:-1:-1;;;;;9880:4:39;9855;;-1:-1:-1;;9860:15:39;;9855:21;;;;;;;;;;;;;-1:-1:-1;;;;;9855:21:39;-1:-1:-1;;;;;9855:29:39;;9847:71;;;;;-1:-1:-1;;;9847:71:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;9968:7;;9938:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9968:7:39;;9977:9;;9938:55;9988:4;;;;;;9938:55;;;;9988:4;;9938:55;9988:4;9938:55;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;9938:29:39;;-1:-1:-1;;;9938:55:39:i;:::-;9928:65;;10025:11;10011:7;10019:1;10011:10;;;;;;;;;;;;;;:25;;10003:77;;;;-1:-1:-1;;;10003:77:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6763:822;7096:14;7162:7;;;7178:4;7096:14;;7137:46;;-1:-1:-1;;;;;7162:7:39;;;;7171:5;;7178:4;7137:24;:46::i;:::-;7122:61;;7193:10;7206;:33;;7230:9;7206:33;;;-1:-1:-1;;7206:33:39;7250:174;;;;;;7291:10;7250:174;;;;7323:4;7250:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7193:46;;-1:-1:-1;;;;;;7250:27:39;;;;;:174;;;;;-1:-1:-1;;7250:174:39;;;;;;;;-1:-1:-1;7250:27:39;:174;;;5:2:-1;;;;30:1;27;20:12;5:2;7250:174:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7250:174:39;;;;7447:131;7508:5;7515:9;7526:14;7542:12;7556:2;7560:8;7447:47;:131::i;:::-;7435:143;6763:822;-1:-1:-1;;;;;;;;;;;;;6763:822:39:o;12125:684::-;12336:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;12356:140;12403:4;;12408:1;12403:7;;;;;;;;;;;;;-1:-1:-1;;;;;12403:7:39;12413:10;12425:51;12450:7;;;;;;;;;-1:-1:-1;;;;;12450:7:39;12459:4;;12464:1;12459:7;;;;;;;;;;;;;-1:-1:-1;;;;;12459:7:39;12468:4;;12473:1;12468:7;;;;;;12425:51;12478:8;12356:26;:140::i;:::-;12506:18;12534:4;;-1:-1:-1;;12539:15:39;;12534:21;;;;;;;;;;;;;-1:-1:-1;;;;;12534:21:39;-1:-1:-1;;;;;12527:39:39;;12567:2;12527:43;;;;;;;;;;;;;-1:-1:-1;;;;;12527:43:39;-1:-1:-1;;;;;12527:43:39;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12527:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12527:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12527:43:39;12580:44;;;12527:43;12580:44;;;;;;;;;;;;;;12527:43;;-1:-1:-1;12580:44:39;;;;12615:4;;;;;;12580:44;;;12615:4;;12580:44;12615:4;12580:44;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;12621:2:39;;-1:-1:-1;12580:34:39;;-1:-1:-1;;12580:44:39:i;:::-;12721:12;12655:62;12703:13;12662:4;;-1:-1:-1;;12667:15:39;;12662:21;;;;;;;;;;;;;-1:-1:-1;;;;;12662:21:39;-1:-1:-1;;;;;12655:39:39;;12695:2;12655:43;;;;;;;;;;;;;-1:-1:-1;;;;;12655:43:39;-1:-1:-1;;;;;12655:43:39;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12655:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12655:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12655:43:39;;:62;:47;:62;:::i;:::-;:78;;12634:168;;;;-1:-1:-1;;;12634:168:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:1;12125:684;;;;;;;:::o;13603:777::-;13819:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;13876:4;;-1:-1:-1;;;;;13876:4:39;13851;;-1:-1:-1;;13856:15:39;;13851:21;;;;;;;;;;;;;-1:-1:-1;;;;;13851:21:39;-1:-1:-1;;;;;13851:29:39;;13843:71;;;;;-1:-1:-1;;;13843:71:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;13924:140;13971:4;;13976:1;13971:7;;;;;;13924:140;14074:55;14109:4;;14074:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14123:4:39;;-1:-1:-1;14074:34:39;;-1:-1:-1;;14074:55:39:i;:::-;14163:4;;14156:37;;;;;;14187:4;14156:37;;;;;;14139:14;;-1:-1:-1;;;;;14163:4:39;;14156:22;;:37;;;;;;;;;;;;;;14163:4;14156:37;;;5:2:-1;;;;30:1;27;20:12;5:2;14156:37:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14156:37:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14156:37:39;;-1:-1:-1;14211:25:39;;;;14203:81;;;;-1:-1:-1;;;14203:81:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14300:4;;14294:31;;;;;;;;;;;;;;-1:-1:-1;;;;;14300:4:39;;;;14294:20;;:31;;;;;14300:4;;14294:31;;;;;;;;14300:4;;14294:31;;;5:2:-1;;;;30:1;27;20:12;5:2;14294:31:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14294:31:39;;;;14335:38;14359:2;14363:9;14335:23;:38::i;8903:683::-;9118:21;9091:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;9170:4;;-1:-1:-1;;;;;9170:4:39;9159;;9170;9159:7;;;;;;;;;;;-1:-1:-1;;;;;9159:7:39;-1:-1:-1;;;;;9159:15:39;;9151:57;;;;;-1:-1:-1;;;9151:57:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;9259:7;;9228:56;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9259:7:39;;9268:9;;9228:56;9279:4;;;;;;9228:56;;;;9279:4;;9228:56;9279:4;9228:56;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;9228:30:39;;-1:-1:-1;;;9228:56:39:i;:::-;9218:66;;9333:12;9302:7;9327:1;9310:7;:14;:18;9302:27;;;;;;;;;;;;;;:43;;9294:99;;;;-1:-1:-1;;;9294:99:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9409:4;;9429:10;;-1:-1:-1;;;;;9409:4:39;;;;9403:19;;9429:7;;9409:4;;9429:10;;;;;;;;;;9403:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9403:39:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9465:4:39;;;9505:7;;-1:-1:-1;;;;;9465:4:39;;;;-1:-1:-1;9459:20:39;;-1:-1:-1;9480:51:39;;-1:-1:-1;9505:7:39;;;;9514:4;;;;:7;;;;9480:51;9533:7;9541:1;9533:10;;;;;;;;;;;;;;9459:85;;;;;;;;;;;;;-1:-1:-1;;;;;9459:85:39;-1:-1:-1;;;;;9459:85:39;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9459:85:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9459:85:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9459:85:39;9452:93;;;;9555:24;9561:7;9570:4;;9555:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9576:2:39;;-1:-1:-1;9555:5:39;;-1:-1:-1;;9555:24:39:i;:::-;8903:683;;;;;;;;:::o;14811:208::-;14914:13;14950:62;14979:9;14990;15001:10;14950:28;:62::i;8258:639::-;8483:21;8456:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;8556:7;;8526:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8556:7:39;;8565:9;;8526:55;8576:4;;;;;;8526:55;;;;8576:4;;8526:55;8576:4;8526:55;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;8526:29:39;;-1:-1:-1;;;8526:55:39:i;:::-;8516:65;;8613:11;8599:7;8607:1;8599:10;;;;;;;;;;;;;;:25;;8591:77;;;;-1:-1:-1;;;8591:77:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;421:19;;;-1:-1:-1;;;;;421:19:39;;:::o;14421:169::-;14501:12;14532:51;14555:7;14564:8;14574;14532:22;:51::i;6098:659::-;6340:14;6321:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;6430:4;;6382:188;;6411:5;;-1:-1:-1;;;;;6430:4:39;6448:9;6471:14;6499:12;6533:4;6552:8;6382:15;:188::i;:::-;6622:38;;;;;;6654:4;6622:38;;;;;;6366:204;;-1:-1:-1;6580:81:39;;-1:-1:-1;6610:5:39;;6618:2;;-1:-1:-1;;;;;6622:23:39;;;;;:38;;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;6622:38:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6622:38:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6622:38:39;6580:22;:81::i;:::-;6677:4;;6671:31;;;;;;;;;;;;;;-1:-1:-1;;;;;6677:4:39;;;;6671:20;;:31;;;;;6677:4;;6671:31;;;;;;;;6677:4;;6671:31;;;5:2:-1;;;;30:1;27;20:12;5:2;6671:31:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6671:31:39;;;;6712:38;6736:2;6740:9;6712:23;:38::i;12815:782::-;13020:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;13063:4;;-1:-1:-1;;;;;13063:4:39;13052;;13063;13052:7;;;;;;;;;;;-1:-1:-1;;;;;13052:7:39;-1:-1:-1;;;;;13052:15:39;;13044:57;;;;;-1:-1:-1;;;13044:57:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;13152:4;;13146:37;;;;;;;;13127:9;;-1:-1:-1;;;;;13152:4:39;;13146:19;;13127:9;;13146:37;;;;;13111:13;;13146:37;;;;;;;;13127:9;13152:4;13146:37;;;5:2:-1;;;;30:1;27;20:12;5:2;13146:37:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13206:4:39;;;13246:7;;-1:-1:-1;;;;;13206:4:39;;;;-1:-1:-1;13200:20:39;;-1:-1:-1;13221:51:39;;-1:-1:-1;13246:7:39;;;;13255:4;;;;:7;;;;13221:51;13274:8;13200:83;;;;;;;;;;;;;-1:-1:-1;;;;;13200:83:39;-1:-1:-1;;;;;13200:83:39;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13200:83:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13200:83:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13200:83:39;13193:91;;;;13294:18;13322:4;;-1:-1:-1;;13327:15:39;;13322:21;;;;;;;;;;;;;-1:-1:-1;;;;;13322:21:39;-1:-1:-1;;;;;13315:39:39;;13355:2;13315:43;;;;;;;;;;;;;-1:-1:-1;;;;;13315:43:39;-1:-1:-1;;;;;13315:43:39;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13315:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13315:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13315:43:39;13368:44;;;13315:43;13368:44;;;;;;;;;;;;;;13315:43;;-1:-1:-1;13368:44:39;;;;13403:4;;;;;;13368:44;;;13403:4;;13368:44;13403:4;13368:44;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;13409:2:39;;-1:-1:-1;13368:34:39;;-1:-1:-1;;13368:44:39:i;:::-;13509:12;13443:62;13491:13;13450:4;;-1:-1:-1;;13455:15:39;;13450:21;;;;;;;;;;;;;-1:-1:-1;;;;;13450:21:39;-1:-1:-1;;;;;13443:39:39;;13483:2;13443:43;;;;;;;;;;;;;-1:-1:-1;;;;;13443:43:39;-1:-1:-1;;;;;13443:43:39;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;2887:832:39;3116:12;3130;3097:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:12;3194:7;;3169:49;;-1:-1:-1;;;;;3194:7:39;3203:6;3211;3169:24;:49::i;:::-;3228:62;;;;;;3262:10;3228:62;;;;-1:-1:-1;;;;;3228:33:39;;:62;;;;;;;;;;;;;;3154:64;;-1:-1:-1;3228:33:39;;;;:62;;;;;;;;;;;;;;;-1:-1:-1;3228:33:39;:62;;;5:2:-1;;;;30:1;27;20:12;5:2;3228:62:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3228:62:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3357:29:39;;;;;;-1:-1:-1;;;;;3357:29:39;;;;;;;;;3327:12;;;;3357:25;;;;;;:29;;;;;;;;;;;3327:12;3357:25;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;3357:29:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3357:29:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3357:29:39;;;;;;;;;-1:-1:-1;3357:29:39;-1:-1:-1;3397:14:39;3416:43;3444:6;3452;3416:27;:43::i;:::-;3396:63;;;3500:6;-1:-1:-1;;;;;3490:16:39;:6;-1:-1:-1;;;;;3490:16:39;;:58;;3531:7;3540;3490:58;;;3510:7;3519;3490:58;3469:79;;-1:-1:-1;3469:79:39;-1:-1:-1;3566:21:39;;;;3558:72;;;;-1:-1:-1;;;3558:72:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3659:10;3648:7;:21;;3640:72;;;;-1:-1:-1;;;3640:72:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:1;;;;2887:832;;;;;;;;;;;:::o;393:22::-;;;-1:-1:-1;;;;;393:22:39;;:::o;15025:200::-;15194:7;;15119:21;;15163:55;;-1:-1:-1;;;;;15194:7:39;15203:8;15213:4;15163:30;:55::i;5205:817::-;5469:16;5487:14;5513:12;5528:46;5553:7;;;;;;;;;-1:-1:-1;;;;;5553:7:39;5562:5;5569:4;;;;;;;;;-1:-1:-1;;;;;5569:4:39;5528:24;:46::i;:::-;5513:61;;5584:10;5597;:33;;5621:9;5597:33;;;-1:-1:-1;;5597:33:39;5641:174;;;;;;5682:10;5641:174;;;;5714:4;5641:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5584:46;;-1:-1:-1;;;;;;5641:27:39;;;;;:174;;;;;-1:-1:-1;;5641:174:39;;;;;;;;-1:-1:-1;5641:27:39;:174;;;5:2:-1;;;;30:1;27;20:12;5:2;5641:174:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5641:174:39;;;;5853:162;5885:5;5904:9;5927:14;5955:12;5981:2;5997:8;5853:18;:162::i;:::-;5826:189;;;;-1:-1:-1;5205:817:39;-1:-1:-1;;;;;;;;;;;;;5205:817:39:o;954:910::-;1216:12;1230;1244:14;1197:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;1291:167;1318:6;1338;1358:14;1386;1414:10;1438;1291:13;:167::i;:::-;1468:12;1508:7;;1270:188;;-1:-1:-1;1270:188:39;;-1:-1:-1;1468:12:39;1483:49;;-1:-1:-1;;;;;1508:7:39;1517:6;1525;1483:24;:49::i;:::-;1468:64;;1542:127;1589:6;1610:10;1634:4;1652:7;1542:26;:127::i;:::-;1679;1726:6;1747:10;1771:4;1789:7;1679:26;:127::i;:::-;1843:4;-1:-1:-1;;;;;1828:25:39;;1854:2;1828:29;;;;;;;;;;;;;-1:-1:-1;;;;;1828:29:39;-1:-1:-1;;;;;1828:29:39;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1828:29:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1828:29:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1828:29:39;954:910;;;;-1:-1:-1;1828:29:39;;-1:-1:-1;954:910:39;;-1:-1:-1;;;;;;;;;954:910:39:o;1870:1011::-;2099:16;2117:14;2133;2080:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;2232:4;;2186:169;;2213:5;;-1:-1:-1;;;;;2232:4:39;2250:18;2282:9;2305:14;2333:12;2186:13;:169::i;:::-;2365:12;2405:7;;;2421:4;2159:196;;-1:-1:-1;2159:196:39;;-1:-1:-1;2365:12:39;2380:46;;-1:-1:-1;;;;;2405:7:39;;;;2414:5;;2421:4;2380:24;:46::i;:::-;2365:61;;2436:130;2483:5;2503:10;2527:4;2545:11;2436:26;:130::i;:::-;2582:4;;;;;;;;;-1:-1:-1;;;;;2582:4:39;-1:-1:-1;;;;;2576:19:39;;2602:9;2576:38;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2576:38:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2637:4:39;;2631:37;;;;;;-1:-1:-1;;;;;2631:37:39;;;;;;;;;;;;;;;2637:4;;;;;-1:-1:-1;2631:20:39;;-1:-1:-1;2631:37:39;;;;;-1:-1:-1;2631:37:39;;;;;;;2637:4;;2631:37;;;5:2:-1;;;;30:1;27;20:12;5:2;2631:37:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2631:37:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2631:37:39;2624:45;;;;2706:4;-1:-1:-1;;;;;2691:25:39;;2717:2;2691:29;;;;;;;;;;;;;-1:-1:-1;;;;;2691:29:39;-1:-1:-1;;;;;2691:29:39;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2691:29:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2691:29:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2691:29:39;;-1:-1:-1;2769:9:39;:21;-1:-1:-1;2765:110:39;;;2806:58;2830:10;2854:9;2842;:21;2806:23;:58::i;:::-;562:1;1870:1011;;;;;;;;;;;:::o;11332:787::-;11544:21;11517:8;508:15;496:8;:27;;488:64;;;;;-1:-1:-1;;;488:64:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;11596:4;;-1:-1:-1;;;;;11596:4:39;11585;;11596;11585:7;;;;;;;;;;;-1:-1:-1;;;;;11585:7:39;-1:-1:-1;;;;;11585:15:39;;11577:57;;;;;-1:-1:-1;;;11577:57:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;11684:7;;11654:55;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11684:7:39;;11693:9;;11654:55;11704:4;;;;;;11654:55;;;;11704:4;;11654:55;11704:4;11654:55;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;11654:29:39;;-1:-1:-1;;;11654:55:39:i;:::-;11644:65;;11741:9;11727:7;11735:1;11727:10;;;;;;;;;;;;;;:23;;11719:75;;;;-1:-1:-1;;;11719:75:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11810:4;;11830:10;;-1:-1:-1;;;;;11810:4:39;;;;11804:19;;11830:7;;11810:4;;11830:10;;;;;;;;;;11804:39;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11804:39:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11866:4:39;;;11906:7;;-1:-1:-1;;;;;11866:4:39;;;;-1:-1:-1;11860:20:39;;-1:-1:-1;11881:51:39;;-1:-1:-1;11906:7:39;;;;11915:4;;;;:7;;;;11881:51;11934:7;11942:1;11934:10;;;;;;;;;;;;;;11860:85;;;;;;;;;;;;;-1:-1:-1;;;;;11860:85:39;-1:-1:-1;;;;;11860:85:39;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11860:85:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11860:85:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11860:85:39;11853:93;;;;11956:24;11962:7;11971:4;;11956:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11977:2:39;;-1:-1:-1;11956:5:39;;-1:-1:-1;;11956:24:39:i;:::-;12041:7;12049:1;12041:10;;;;;;;;;;;;;;12029:9;:22;12025:87;;;12053:59;12077:10;12101:7;12109:1;12101:10;;;;;;;;;;;;;;12089:9;:22;12053:23;:59::i;662:174:127:-;770:58;;;-1:-1:-1;;;;;770:58:127;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;770:58:127;;;;;;;;25:18:-1;;61:17;;770:58:127;182:15:-1;793:23:127;179:29:-1;160:49;;744:85:127;;763:5;;744:18;:85::i;:::-;662:174;;;:::o;644:244:44:-;810:12;;;772;810;;;;;;;;;-1:-1:-1;;;;;789:7:44;;;803:5;;789:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;789:34:44;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;771:52:44;;;841:7;833:48;;;;;-1:-1:-1;;;833:48:44;;;;;;;;;;;;;;;;;;;;;;;;;;;2571:510:45;2664:14;2709:1;2698:8;:12;2690:68;;;;-1:-1:-1;;;2690:68:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:1;2776:9;:13;:31;;;;;2806:1;2793:10;:14;2776:31;2768:84;;;;-1:-1:-1;;;2768:84:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2862:20;2885:17;:8;2898:3;2885:17;:12;:17;:::i;:::-;2862:40;-1:-1:-1;2912:14:45;2929:31;2862:40;2949:10;2929:31;:19;:31;:::i;:::-;2912:48;-1:-1:-1;2970:16:45;2989:40;3013:15;2989:19;:9;3003:4;2989:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2970:59;;3063:11;3051:9;:23;;;;;;;2571:510;-1:-1:-1;;;;;;;2571:510:45:o;3744:557::-;3899:21;3955:1;3940:4;:11;:16;;3932:59;;;;;-1:-1:-1;;;3932:59:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:4;:11;4011:23;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4011:23:45;;4001:33;;4057:8;4044:7;4052:1;4044:10;;;;;;;;;;;;;:21;;;;;4080:6;4075:220;4106:1;4092:4;:11;:15;4088:1;:19;4075:220;;;4129:14;4145:15;4164:42;4176:7;4185:4;4190:1;4185:7;;;;;;;;;;;;;;4194:4;4199:1;4203;4199:5;4194:11;;;;;;;;;;;;;;4164;:42::i;:::-;4128:78;;;;4237:47;4250:7;4258:1;4250:10;;;;;;;;;;;;;;4262:9;4273:10;4237:12;:47::i;:::-;4220:7;4228:1;4232;4228:5;4220:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;4109:3:45;;4075:220;;;;3744:557;;;;;:::o;997:532::-;1086:12;1111:14;1127;1145:26;1156:6;1164;1145:10;:26::i;:::-;1380:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1380:32:45;;;;;1370:43;;;;;;1262:218;;;;;;;;;;;;;;;;;;;;;;;278:66;1262:218;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1262:218:45;;;;;;;1231:267;;;;;;;;;997:532;-1:-1:-1;;;;;997:532:45:o;842:202:127:-;968:68;;;-1:-1:-1;;;;;968:68:127;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;968:68:127;;;;;;;;25:18:-1;;61:17;;968:68:127;182:15:-1;991:27:127;179:29:-1;160:49;;942:95:127;;961:5;;942:18;:95::i;:::-;842:202;;;;:::o;16899:764:39:-;16997:6;16992:665;17023:1;17009:4;:11;:15;17005:1;:19;16992:665;;;17046:13;17061:14;17080:4;17085:1;17080:7;;;;;;;;;;;;;;17089:4;17094:1;17098;17094:5;17089:11;;;;;;;;;;;;;;17045:56;;;;17116:14;17135:42;17163:5;17170:6;17135:27;:42::i;:::-;17115:62;;;17191:14;17208:7;17216:1;17220;17216:5;17208:14;;;;;;;;;;;;;;17191:31;;17237:15;17254;17282:6;-1:-1:-1;;;;;17273:15:39;:5;-1:-1:-1;;;;;17273:15:39;;:61;;17315:9;17331:1;17273:61;;;17297:1;17301:9;17273:61;17236:98;;;;17348:10;17379:1;17365:4;:11;:15;17361:1;:19;:82;;17440:3;17361:82;;;17408:7;;17425:11;;17383:54;;-1:-1:-1;;;;;17408:7:39;;17417:6;;17425:4;;17434:1;17430:5;;;17425:11;;;;;;;;;;;;17383:24;:54::i;:::-;17497:7;;17348:95;;-1:-1:-1;17472:48:39;;-1:-1:-1;;;;;17497:7:39;17506:5;17513:6;17472:24;:48::i;:::-;-1:-1:-1;;;;;17457:69:39;;17544:10;17572;17600:2;17630:1;17620:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;17620:12:39;87:34:-1;135:17;;-1:-1;17620:12:39;;17457:189;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17457:189:39;-1:-1:-1;;;;;17457:189:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17457:189:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17457:189:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17026:3:39;;;;;-1:-1:-1;16992:665:39;;-1:-1:-1;;;;;;;;16992:665:39;4379:578:45;4534:21;4590:1;4575:4;:11;:16;;4567:59;;;;;-1:-1:-1;;;4567:59:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;4657:4;:11;4646:23;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;4646:23:45;;4636:33;;4709:9;4679:7;4704:1;4687:7;:14;:18;4679:27;;;;;;;;;;;;;;;;;:39;4742:11;;-1:-1:-1;;4742:15:45;4728:223;4759:5;;4728:223;;4786:14;4802:15;4821:42;4833:7;4842:4;4851:1;4847;:5;4842:11;;;;;;;;;;;;;;4855:4;4860:1;4855:7;;;;;;;4821:42;4785:78;;;;4894:46;4906:7;4914:1;4906:10;;;;;;;;;;;;;;4918:9;4929:10;4894:11;:46::i;:::-;4877:7;4889:1;4885;:5;4877:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;4766:3:45;4728:223;;351:106;278:66;351:106;:::o;17806:1382:39:-;17910:6;17905:1277;17936:1;17922:4;:11;:15;17918:1;:19;17905:1277;;;17959:13;17974:14;17993:4;17998:1;17993:7;;;;;;;;;;;;;;18002:4;18007:1;18011;18007:5;18002:11;;;;;;;;;;;;;;17958:56;;;;18029:14;18048:42;18076:5;18083:6;18048:27;:42::i;:::-;-1:-1:-1;18104:19:39;18166:7;;18028:62;;-1:-1:-1;18104:19:39;18141:48;;-1:-1:-1;;;;;18166:7:39;18175:5;18182:6;18141:24;:48::i;:::-;18104:86;;18204:16;18234:17;18382:13;18397;18415:4;-1:-1:-1;;;;;18415:16:39;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18415:18:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18415:18:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18415:18:39;;;;;;;18381:52;;;;;-1:-1:-1;18381:52:39;;-1:-1:-1;18452:17:39;;-1:-1:-1;;;;;18493:15:39;;;;;;;:61;;18535:8;18545;18493:61;;;18512:8;18522;18493:61;18451:103;;;;18586:56;18629:12;18593:5;-1:-1:-1;;;;;18586:23:39;;18618:4;18586:38;;;;;;;;;;;;;-1:-1:-1;;;;;18586:38:39;-1:-1:-1;;;;;18586:38:39;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;18586:56:39;18572:70;;18675:71;18705:11;18718:12;18732:13;18675:29;:71::i;:::-;18660:86;;17905:1277;;;;18816:15;18833;18861:6;-1:-1:-1;;;;;18852:15:39;:5;-1:-1:-1;;;;;18852:15:39;;:67;;18897:12;18916:1;18852:67;;;18876:1;18880:12;18852:67;18815:104;;;;18933:10;18964:1;18950:4;:11;:15;18946:1;:19;:82;;19025:3;18946:82;;;18993:7;;19010:11;;18968:54;;-1:-1:-1;;;;;18993:7:39;;19002:6;;19010:4;;19019:1;19015:5;;;19010:11;;;;;18968:54;19145:12;;;19155:1;19145:12;;;;;;;;;;19042:129;;;;;;;;;;;;;;;-1:-1:-1;;;;;19042:129:39;;;;;;;;;;;;;;;;;;;;;;18933:95;;-1:-1:-1;19042:9:39;;;;;;19069:10;;19097;;18933:95;;19145:12;;19042:129;;;;;;;;19145:12;;19042:129;;;;19145:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19042:129:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19042:129:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17939:3:39;;;;;-1:-1:-1;17905:1277:39;;-1:-1:-1;;;;;;;;;;17905:1277:39;1274:134:124;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;3199:466:45:-;3292:13;3337:1;3325:9;:13;3317:70;;;;-1:-1:-1;;;3317:70:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:1;3405:9;:13;:31;;;;;3435:1;3422:10;:14;3405:31;3397:84;;;;-1:-1:-1;;;3397:84:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:14;3508:34;3537:4;3508:24;:9;3522;3508:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3491:51;-1:-1:-1;3552:16:45;3571:34;3601:3;3571:25;:10;3586:9;3571:25;:14;:25;:::i;:34::-;3552:53;;3626:32;3656:1;3639:11;3627:9;:23;;;;;;;3626:32;:29;:32;:::i;:::-;3615:43;3199:466;-1:-1:-1;;;;;;3199:466:45:o;2135:317::-;2217:12;2259:1;2249:7;:11;2241:61;;;;-1:-1:-1;;;2241:61:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2331:1;2320:8;:12;:28;;;;;2347:1;2336:8;:12;2320:28;2312:81;;;;-1:-1:-1;;;2312:81:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:8;2413:21;:7;2425:8;2413:21;:11;:21;:::i;:::-;:32;;;;;;;2135:317;-1:-1:-1;;;;2135:317:45:o;563:345::-;638:14;654;698:6;-1:-1:-1;;;;;688:16:45;:6;-1:-1:-1;;;;;688:16:45;;;680:66;;;;-1:-1:-1;;;680:66:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:6;-1:-1:-1;;;;;775:15:45;:6;-1:-1:-1;;;;;775:15:45;;:53;;813:6;821;775:53;;;794:6;802;775:53;756:72;;-1:-1:-1;756:72:45;-1:-1:-1;;;;;;846:20:45;;838:63;;;;;-1:-1:-1;;;838:63:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:345;;;;;:::o;15437:1355:39:-;15640:12;15751:7;;15733:50;;;;;;-1:-1:-1;;;;;15733:50:39;;;;;;;;;;;;;;;;15640:12;;;;15751:7;;15733:34;;:50;;;;;;;;;;;;;;15751:7;15733:50;;;5:2:-1;;;;30:1;27;20:12;5:2;15733:50:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15733:50:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15733:50:39;-1:-1:-1;;;;;15733:64:39;;15729:148;;;15831:7;;;15813:53;;;;;;-1:-1:-1;;;;;15813:53:39;;;;;;;;;;;;;;;;15831:7;;;;;15813:37;;:53;;;;;;;;;;;;;;;;;;15831:7;15813:53;;;5:2:-1;;;;30:1;27;20:12;5:2;15813:53:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15813:53:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15729:148:39;15887:13;15948:7;;15887:13;;15919:53;;-1:-1:-1;;;;;15948:7:39;15957:6;15965;15919:28;:53::i;:::-;15886:86;;;;15986:8;15998:1;15986:13;:30;;;;-1:-1:-1;16003:13:39;;15986:30;15982:804;;;16054:14;;-1:-1:-1;16070:14:39;;-1:-1:-1;15982:804:39;;;16116:19;16138:58;16161:14;16177:8;16187;16138:22;:58::i;:::-;16116:80;;16232:14;16214;:32;16210:566;;16292:10;16274:14;:28;;16266:79;;;;-1:-1:-1;;;16266:79:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16385:14;;-1:-1:-1;16401:14:39;-1:-1:-1;16401:14:39;16210:566;;;16455:19;16477:58;16500:14;16516:8;16526;16477:22;:58::i;:::-;16455:80;;16578:14;16560;:32;;16553:40;;;;16637:10;16619:14;:28;;16611:79;;;;-1:-1:-1;;;16611:79:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16730:14;-1:-1:-1;16746:14:39;;-1:-1:-1;16210:566:39;15982:804;;15437:1355;;;;;;;;;;;:::o;2666:1095:127:-;3261:27;3269:5;-1:-1:-1;;;;;3261:25:127;;:27::i;:::-;3253:71;;;;;-1:-1:-1;;;3253:71:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;-1:-1:-1;;;;;3436:19:127;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:127;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:127;;;;3479:7;3471:52;;;;;-1:-1:-1;;;3471:52:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3538:17;;:21;3534:221;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3667:30:127;3659:85;;;;-1:-1:-1;;;3659:85:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:459:124;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:124;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;2536:56:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;834:176;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:124;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:441:45;1731:13;1746;1772:14;1791:26;1802:6;1810;1791:10;:26::i;:::-;1771:46;;;1828:13;1843;1876:32;1884:7;1893:6;1901;1876:7;:32::i;:::-;-1:-1:-1;;;;;1861:60:45;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1861:62:45;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1861:62:45;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1861:62:45;;;;;;;1827:96;;;;;-1:-1:-1;1827:96:45;;-1:-1:-1;;;;;;1956:16:45;;;;;;;:62;;1999:8;2009;1956:62;;;1976:8;1986;1956:62;1933:85;;;;-1:-1:-1;1584:441:45;-1:-1:-1;;;;;;;1584:441:45:o;1732:187:124:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:124;;;1732:187::o;686:610:128:-;746:4;1207:20;;1052:66;1246:23;;;;;;:42;;-1:-1:-1;;1273:15:128;;;1238:51;-1:-1:-1;;686:610:128:o",
|
|
1046
1046
|
"source": "pragma solidity ^0.5.16;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\n\nimport \"./libraries/SafeETH.sol\";\nimport \"./libraries/UniswapV2Library.sol\";\n\nimport \"./interfaces/IUniswapV2Factory.sol\";\nimport \"./interfaces/IWETH.sol\";\n\n\n// solium-disable function-order\ncontract UniswapV2Router02 {\n using SafeMath for uint;\n\n address public factory;\n address public WETH;\n\n modifier ensure(uint deadline) {\n require(deadline >= block.timestamp, \"UniswapV2Router: EXPIRED\");\n _;\n }\n\n constructor(address _factory, address _WETH) public {\n factory = _factory;\n WETH = _WETH;\n }\n\n function() external payable {\n assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\n }\n\n function getPairInitCodeHash() external pure returns (bytes32) {\n return UniswapV2Library.getPairInitCodeHash();\n }\n\n function addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) external ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\n (amountA, amountB) = _addLiquidity(\n tokenA,\n tokenB,\n amountADesired,\n amountBDesired,\n amountAMin,\n amountBMin\n );\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n SafeERC20.safeTransferFrom(\n IERC20(tokenA),\n msg.sender,\n pair,\n amountA\n );\n SafeERC20.safeTransferFrom(\n IERC20(tokenB),\n msg.sender,\n pair,\n amountB\n );\n liquidity = IUniswapV2Pair(pair).mint(to);\n }\n\n function addLiquidityETH(\n address token,\n uint amountTokenDesired,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) external payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\n (amountToken, amountETH) = _addLiquidity(\n token,\n WETH,\n amountTokenDesired,\n msg.value,\n amountTokenMin,\n amountETHMin\n );\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n SafeERC20.safeTransferFrom(\n IERC20(token),\n msg.sender,\n pair,\n amountToken\n );\n IWETH(WETH).deposit.value(amountETH)();\n assert(IWETH(WETH).transfer(pair, amountETH));\n liquidity = IUniswapV2Pair(pair).mint(to);\n // refund dust eth, if any\n if (msg.value > amountETH) {\n SafeETH.safeTransferETH(msg.sender, msg.value - amountETH);\n }\n }\n\n function removeLiquidity(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline\n ) public ensure(deadline) returns (uint amountA, uint amountB) {\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\n (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB);\n (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\n require(amountA >= amountAMin, \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\");\n require(amountB >= amountBMin, \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\");\n }\n\n function removeLiquidityETH(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public ensure(deadline) returns (uint amountToken, uint amountETH) {\n (amountToken, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n SafeERC20.safeTransfer(IERC20(token), to, amountToken);\n IWETH(WETH).withdraw(amountETH);\n SafeETH.safeTransferETH(to, amountETH);\n }\n\n function removeLiquidityWithPermit(\n address tokenA,\n address tokenB,\n uint liquidity,\n uint amountAMin,\n uint amountBMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountA, uint amountB) {\n address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);\n uint value = approveMax ? uint(-1) : liquidity;\n\n IUniswapV2Pair(pair).permit(\n msg.sender,\n address(this),\n value,\n deadline,\n v,\n r,\n s\n );\n\n (amountA, amountB) = removeLiquidity(\n tokenA,\n tokenB,\n liquidity,\n amountAMin,\n amountBMin,\n to,\n deadline\n );\n }\n\n function removeLiquidityETHWithPermit(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax, uint8 v, bytes32 r, bytes32 s\n ) external returns (uint amountToken, uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n\n IUniswapV2Pair(pair).permit(\n msg.sender,\n address(this),\n value,\n deadline,\n v,\n r,\n s\n );\n\n (amountToken, amountETH) = removeLiquidityETH(\n token,\n liquidity,\n amountTokenMin,\n amountETHMin,\n to,\n deadline\n );\n }\n\n // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\n function removeLiquidityETHSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline\n ) public ensure(deadline) returns (uint amountETH) {\n (, amountETH) = removeLiquidity(\n token,\n WETH,\n liquidity,\n amountTokenMin,\n amountETHMin,\n address(this),\n deadline\n );\n SafeERC20.safeTransfer(IERC20(token), to, IERC20(token).balanceOf(address(this)));\n IWETH(WETH).withdraw(amountETH);\n SafeETH.safeTransferETH(to, amountETH);\n }\n\n function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n address token,\n uint liquidity,\n uint amountTokenMin,\n uint amountETHMin,\n address to,\n uint deadline,\n bool approveMax,\n uint8 v,\n bytes32 r,\n bytes32 s\n )\n external\n returns (uint amountETH) {\n address pair = UniswapV2Library.pairFor(factory, token, WETH);\n uint value = approveMax ? uint(-1) : liquidity;\n\n IUniswapV2Pair(pair).permit(\n msg.sender,\n address(this),\n value,\n deadline,\n v,\n r,\n s\n );\n\n amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\n token, liquidity, amountTokenMin, amountETHMin, to, deadline\n );\n }\n\n function swapExactTokensForTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n ensure(deadline)\n returns (uint[] memory amounts) {\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\n require(amounts[amounts.length - 1] >= amountOutMin, \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\");\n SafeERC20.safeTransferFrom(\n IERC20(path[0]),\n msg.sender,\n UniswapV2Library.pairFor(factory, path[0], path[1]),\n amounts[0]\n );\n _swap(amounts, path, to);\n }\n\n function swapTokensForExactTokens(\n uint amountOut,\n uint amountInMax,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n ensure(deadline)\n returns (uint[] memory amounts) {\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= amountInMax, \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\");\n SafeERC20.safeTransferFrom(\n IERC20(path[0]),\n msg.sender,\n UniswapV2Library.pairFor(factory, path[0], path[1]),\n amounts[0]\n );\n _swap(amounts, path, to);\n }\n\n function swapExactETHForTokens(\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n payable\n ensure(deadline)\n returns (uint[] memory amounts) {\n require(path[0] == WETH, \"UniswapV2Router: INVALID_PATH\");\n amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);\n require(amounts[amounts.length - 1] >= amountOutMin, \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\");\n IWETH(WETH).deposit.value(amounts[0])();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n _swap(amounts, path, to);\n }\n\n function swapTokensForExactETH(\n uint amountOut,\n uint amountInMax,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n ensure(deadline)\n returns (uint[] memory amounts) {\n require(path[path.length - 1] == WETH, \"UniswapV2Router: INVALID_PATH\");\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= amountInMax, \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\");\n SafeERC20.safeTransferFrom(\n IERC20(path[0]),\n msg.sender,\n UniswapV2Library.pairFor(factory, path[0], path[1]),\n amounts[0]\n );\n _swap(amounts, path, address(this));\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n SafeETH.safeTransferETH(to, amounts[amounts.length - 1]);\n }\n\n function swapExactTokensForETH(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n ensure(deadline)\n returns (uint[] memory amounts) {\n require(path[path.length - 1] == WETH, \"UniswapV2Router: INVALID_PATH\");\n amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);\n require(amounts[amounts.length - 1] >= amountOutMin, \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\");\n SafeERC20.safeTransferFrom(\n IERC20(path[0]),\n msg.sender,\n UniswapV2Library.pairFor(factory, path[0], path[1]),\n amounts[0]\n );\n _swap(amounts, path, address(this));\n IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n SafeETH.safeTransferETH(to, amounts[amounts.length - 1]);\n }\n\n function swapETHForExactTokens(\n uint amountOut,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n payable\n ensure(deadline)\n returns (uint[] memory amounts) {\n require(path[0] == WETH, \"UniswapV2Router: INVALID_PATH\");\n amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);\n require(amounts[0] <= msg.value, \"UniswapV2Router: EXCESSIVE_INPUT_AMOUNT\");\n IWETH(WETH).deposit.value(amounts[0])();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n _swap(amounts, path, to);\n // refund dust eth, if any\n if (msg.value > amounts[0]) SafeETH.safeTransferETH(msg.sender, msg.value - amounts[0]);\n }\n\n function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n ) external ensure(deadline) {\n SafeERC20.safeTransferFrom(\n IERC20(path[0]), msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\n );\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n _swapSupportingFeeOnTransferTokens(path, to);\n require(\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"\n );\n }\n\n function swapExactETHForTokensSupportingFeeOnTransferTokens(\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n payable\n ensure(deadline)\n {\n require(path[0] == WETH, \"UniswapV2Router: INVALID_PATH\");\n uint amountIn = msg.value;\n IWETH(WETH).deposit.value(amountIn)();\n assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn));\n uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n _swapSupportingFeeOnTransferTokens(path, to);\n require(\n IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\"\n );\n }\n\n function swapExactTokensForETHSupportingFeeOnTransferTokens(\n uint amountIn,\n uint amountOutMin,\n address[] calldata path,\n address to,\n uint deadline\n )\n external\n ensure(deadline)\n {\n require(path[path.length - 1] == WETH, \"UniswapV2Router: INVALID_PATH\");\n SafeERC20.safeTransferFrom(\n IERC20(path[0]), msg.sender, UniswapV2Library.pairFor(factory, path[0], path[1]), amountIn\n );\n _swapSupportingFeeOnTransferTokens(path, address(this));\n uint amountOut = IERC20(WETH).balanceOf(address(this));\n require(amountOut >= amountOutMin, \"UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT\");\n IWETH(WETH).withdraw(amountOut);\n SafeETH.safeTransferETH(to, amountOut);\n }\n\n // **** LIBRARY FUNCTIONS ****\n function quote(uint amountA, uint reserveA, uint reserveB) public pure returns (uint amountB) {\n return UniswapV2Library.quote(amountA, reserveA, reserveB);\n }\n\n function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\n public\n pure\n returns (uint amountOut)\n {\n return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\n }\n\n function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\n public\n pure\n returns (uint amountIn)\n {\n return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\n }\n\n function getAmountsOut(uint amountIn, address[] memory path)\n public\n view\n returns (uint[] memory amounts)\n {\n return UniswapV2Library.getAmountsOut(factory, amountIn, path);\n }\n\n function getAmountsIn(uint amountOut, address[] memory path)\n public\n view\n returns (uint[] memory amounts)\n {\n return UniswapV2Library.getAmountsIn(factory, amountOut, path);\n }\n\n function _addLiquidity(\n address tokenA,\n address tokenB,\n uint amountADesired,\n uint amountBDesired,\n uint amountAMin,\n uint amountBMin\n ) internal returns (uint amountA, uint amountB) {\n // create the pair if it doesn\"t exist yet\n if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\n IUniswapV2Factory(factory).createPair(tokenA, tokenB);\n }\n (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);\n if (reserveA == 0 && reserveB == 0) {\n (amountA, amountB) = (amountADesired, amountBDesired);\n } else {\n uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);\n if (amountBOptimal <= amountBDesired) {\n require(amountBOptimal >= amountBMin, \"UniswapV2Router: INSUFFICIENT_B_AMOUNT\");\n (amountA, amountB) = (amountADesired, amountBOptimal);\n } else {\n uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);\n assert(amountAOptimal <= amountADesired);\n require(amountAOptimal >= amountAMin, \"UniswapV2Router: INSUFFICIENT_A_AMOUNT\");\n (amountA, amountB) = (amountAOptimal, amountBDesired);\n }\n }\n }\n\n // **** SWAP ****\n // requires the initial amount to have already been sent to the first pair\n function _swap(uint[] memory amounts, address[] memory path, address _to) internal {\n for (uint i; i < path.length - 1; i++) {\n (address input, address output) = (path[i], path[i + 1]);\n (address token0,) = UniswapV2Library.sortTokens(input, output);\n uint amountOut = amounts[i + 1];\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\n IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap(\n amount0Out,\n amount1Out,\n to,\n new bytes(0)\n );\n }\n }\n\n // **** SWAP (supporting fee-on-transfer tokens) ****\n // requires the initial amount to have already been sent to the first pair\n function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal {\n for (uint i; i < path.length - 1; i++) {\n (address input, address output) = (path[i], path[i + 1]);\n (address token0,) = UniswapV2Library.sortTokens(input, output);\n IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output));\n uint amountInput;\n uint amountOutput;\n // solium-disable indentation\n {\n // scope to avoid stack too deep errors\n (uint reserve0, uint reserve1,) = pair.getReserves();\n (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\n amountOutput = UniswapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\n }\n // solium-enable indentation\n (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\n address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to;\n pair.swap(\n amount0Out,\n amount1Out,\n to,\n new bytes(0)\n );\n }\n }\n}\n",
|
|
1047
|
-
"sourcePath": "/
|
|
1047
|
+
"sourcePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/UniswapV2Router02.sol",
|
|
1048
1048
|
"ast": {
|
|
1049
|
-
"absolutePath": "/
|
|
1049
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/UniswapV2Router02.sol",
|
|
1050
1050
|
"exportedSymbols": {
|
|
1051
1051
|
"UniswapV2Router02": [
|
|
1052
1052
|
21320
|
|
@@ -1089,7 +1089,7 @@
|
|
|
1089
1089
|
"unitAlias": ""
|
|
1090
1090
|
},
|
|
1091
1091
|
{
|
|
1092
|
-
"absolutePath": "/
|
|
1092
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/SafeETH.sol",
|
|
1093
1093
|
"file": "./libraries/SafeETH.sol",
|
|
1094
1094
|
"id": 19296,
|
|
1095
1095
|
"nodeType": "ImportDirective",
|
|
@@ -1100,7 +1100,7 @@
|
|
|
1100
1100
|
"unitAlias": ""
|
|
1101
1101
|
},
|
|
1102
1102
|
{
|
|
1103
|
-
"absolutePath": "/
|
|
1103
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol",
|
|
1104
1104
|
"file": "./libraries/UniswapV2Library.sol",
|
|
1105
1105
|
"id": 19297,
|
|
1106
1106
|
"nodeType": "ImportDirective",
|
|
@@ -1111,7 +1111,7 @@
|
|
|
1111
1111
|
"unitAlias": ""
|
|
1112
1112
|
},
|
|
1113
1113
|
{
|
|
1114
|
-
"absolutePath": "/
|
|
1114
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol",
|
|
1115
1115
|
"file": "./interfaces/IUniswapV2Factory.sol",
|
|
1116
1116
|
"id": 19298,
|
|
1117
1117
|
"nodeType": "ImportDirective",
|
|
@@ -1122,7 +1122,7 @@
|
|
|
1122
1122
|
"unitAlias": ""
|
|
1123
1123
|
},
|
|
1124
1124
|
{
|
|
1125
|
-
"absolutePath": "/
|
|
1125
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IWETH.sol",
|
|
1126
1126
|
"file": "./interfaces/IWETH.sol",
|
|
1127
1127
|
"id": 19299,
|
|
1128
1128
|
"nodeType": "ImportDirective",
|
|
@@ -29990,7 +29990,7 @@
|
|
|
29990
29990
|
"src": "0:19191:39"
|
|
29991
29991
|
},
|
|
29992
29992
|
"legacyAST": {
|
|
29993
|
-
"absolutePath": "/
|
|
29993
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/UniswapV2Router02.sol",
|
|
29994
29994
|
"exportedSymbols": {
|
|
29995
29995
|
"UniswapV2Router02": [
|
|
29996
29996
|
21320
|
|
@@ -30033,7 +30033,7 @@
|
|
|
30033
30033
|
"unitAlias": ""
|
|
30034
30034
|
},
|
|
30035
30035
|
{
|
|
30036
|
-
"absolutePath": "/
|
|
30036
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/SafeETH.sol",
|
|
30037
30037
|
"file": "./libraries/SafeETH.sol",
|
|
30038
30038
|
"id": 19296,
|
|
30039
30039
|
"nodeType": "ImportDirective",
|
|
@@ -30044,7 +30044,7 @@
|
|
|
30044
30044
|
"unitAlias": ""
|
|
30045
30045
|
},
|
|
30046
30046
|
{
|
|
30047
|
-
"absolutePath": "/
|
|
30047
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/libraries/UniswapV2Library.sol",
|
|
30048
30048
|
"file": "./libraries/UniswapV2Library.sol",
|
|
30049
30049
|
"id": 19297,
|
|
30050
30050
|
"nodeType": "ImportDirective",
|
|
@@ -30055,7 +30055,7 @@
|
|
|
30055
30055
|
"unitAlias": ""
|
|
30056
30056
|
},
|
|
30057
30057
|
{
|
|
30058
|
-
"absolutePath": "/
|
|
30058
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IUniswapV2Factory.sol",
|
|
30059
30059
|
"file": "./interfaces/IUniswapV2Factory.sol",
|
|
30060
30060
|
"id": 19298,
|
|
30061
30061
|
"nodeType": "ImportDirective",
|
|
@@ -30066,7 +30066,7 @@
|
|
|
30066
30066
|
"unitAlias": ""
|
|
30067
30067
|
},
|
|
30068
30068
|
{
|
|
30069
|
-
"absolutePath": "/
|
|
30069
|
+
"absolutePath": "/Users/corey/Leavitt-Innovations/dolomite-v2-protocol/contracts/external/uniswap-v2/interfaces/IWETH.sol",
|
|
30070
30070
|
"file": "./interfaces/IWETH.sol",
|
|
30071
30071
|
"id": 19299,
|
|
30072
30072
|
"nodeType": "ImportDirective",
|
|
@@ -58942,11 +58942,11 @@
|
|
|
58942
58942
|
"events": {},
|
|
58943
58943
|
"links": {},
|
|
58944
58944
|
"address": "0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E",
|
|
58945
|
-
"transactionHash": "
|
|
58945
|
+
"transactionHash": "0x2709bb594143003ef7103062ece0092db5f56354ff3d16c25f66d56e5132beb1"
|
|
58946
58946
|
}
|
|
58947
58947
|
},
|
|
58948
58948
|
"schemaVersion": "3.0.23",
|
|
58949
|
-
"updatedAt": "2022-02-
|
|
58949
|
+
"updatedAt": "2022-02-07T07:18:45.133Z",
|
|
58950
58950
|
"devdoc": {
|
|
58951
58951
|
"methods": {}
|
|
58952
58952
|
},
|