[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "assetAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "wethAmount", "type": "uint256" } ], "name": "AssetsFromFeesConvertedToWeth", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "tokensInAsset", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "tokenAmountsToY", "type": "uint256[]" } ], "name": "DepositToAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenEnter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountEnter", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountMinted", "type": "uint256" }, { "indexed": false, "internalType": "address[]", "name": "tokensInAsset", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "buyAmounts", "type": "uint256[]" } ], "name": "MintAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "newDistribution", "type": "uint256[]" } ], "name": "NewDistribution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "tokensOld", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "sellAmounts", "type": "uint256[]" }, { "indexed": false, "internalType": "address[]", "name": "tokensNew", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "buyAmounts", "type": "uint256[]" }, { "indexed": false, "internalType": "bool", "name": "isIme", "type": "bool" } ], "name": "Rebase", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenExit", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountOfTokenExit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountOfAssetExit", "type": "uint256" }, { "indexed": false, "internalType": "address[]", "name": "tokensInAsset", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "sellAmounts", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "feePercentages", "type": "uint256[]" } ], "name": "RedeemAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "feeAmount", "type": "uint256" } ], "name": "TransferFeesInFeeAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "WithdrawTokens", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newPercentage", "type": "uint256" } ], "name": "XyManualRebalance", "type": "event" }, { "inputs": [ { "internalType": "string[2]", "name": "nameSymbol", "type": "string[2]" }, { "internalType": "address[3]", "name": "oracleZVaultAndWeth", "type": "address[3]" }, { "internalType": "uint256[3]", "name": "imeTimeInfoAndInitialPrice", "type": "uint256[3]" }, { "internalType": "address[]", "name": "_tokenWhitelist", "type": "address[]" }, { "internalType": "address[]", "name": "_tokensInAsset", "type": "address[]" }, { "internalType": "uint256[]", "name": "_tokensDistribution", "type": "uint256[]" }, { "internalType": "address payable", "name": "_feeAddress", "type": "address" } ], "name": "__Asset_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "changeIsTokenWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenAmountsOfY", "type": "uint256[]" } ], "name": "depositToIndex", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAddress", "outputs": [ { "internalType": "address payable", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAmountInAssetToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeAmountToZ", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeLimitForAuto", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeLimitForAutoInAssetToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "forceFeesAutosend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "currencyIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "getBuyAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "currencyOut", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "getSellAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imeEndTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imeStartTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isAllowedAutoXYRebalace", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "isTokenWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenToPay", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oracle", "outputs": [ { "internalType": "contract IOracle", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "newTokensInAsset", "type": "address[]" }, { "internalType": "uint256[]", "name": "distribution", "type": "uint256[]" } ], "name": "rebase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currencyToPay", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feeLimitForAuto", "type": "uint256" }, { "internalType": "uint256", "name": "_feeLimitForAutoInAssetToken", "type": "uint256" } ], "name": "setFeeLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setIsAllowedAutoXYRebalace", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenWhitelist", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenWhitelistLen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokensDistribution", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokensInAsset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensInAssetLen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "totalTokenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenAmounts", "type": "uint256[]" } ], "name": "withdrawTokensForStaking", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "xVaultAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "xPercentage", "type": "uint256" } ], "name": "xyRebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "yVaultAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "yVaultAmountInStaking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "zVault", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526073805460ff19166001179055678ac7230489e80000607481905560755534801561002e57600080fd5b506001606555606880546001600160a01b03191633179055614ffe806100556000396000f3fe6080604052600436106102115760003560e01c806306fdde03146102735780630738ce511461029e578063095ea7b3146102d957806318160ddd146103095780631d0806ae1461031e57806323b872dd14610334578063313ce5671461035457806335d339b1146103705780633853685014610383578063395093511461039957806340c10f19146103b957806341275358146103cc578063425fc89414610404578063467119461461043157806349a95143146104515780635dad3cd61461047157806362d492841461049157806364547536146104b157806370a08231146104d157806375cd7fd3146105075780637bd095201461051d5780637bde82f21461053d5780637dc0d1d01461055d5780638cc1114e1461057d57806395d89b41146105935780639d2f45ea146105a85780639f925abe146105bd578063a457c2d7146105d3578063a7e9cd12146105f3578063a9059cbb14610620578063b0d98e7114610640578063b50958b614610660578063b5af090f14610680578063bbf1fed1146106a0578063bedfddf9146106c0578063c16dff7c146106d6578063c45a0155146106f6578063c7f6ad0e14610716578063d04b131414610743578063d809882414610759578063dd62ed3e1461076e578063e03f54fb146107b4578063e5918bc6146107d4578063ede2bc2e146107f4578063f557f9ff14610809578063f5d983a91461083657600080fd5b3661026e576078546001600160a01b0316336001600160a01b03161461026c5760405162461bcd60e51b815260206004820152600b60248201526a139bddc8185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b005b600080fd5b34801561027f57600080fd5b50610288610850565b6040516102959190613980565b60405180910390f35b3480156102aa57600080fd5b506102cb6102b93660046139ea565b60726020526000908152604090205481565b604051908152602001610295565b3480156102e557600080fd5b506102f96102f4366004613a07565b6108e2565b6040519015158152602001610295565b34801561031557600080fd5b506035546102cb565b34801561032a57600080fd5b506102cb606c5481565b34801561034057600080fd5b506102f961034f366004613a33565b6108f8565b34801561036057600080fd5b5060405160128152602001610295565b61026c61037e366004613b27565b6109a9565b34801561038f57600080fd5b506102cb60755481565b3480156103a557600080fd5b506102f96103b4366004613a07565b610cbc565b6102cb6103c7366004613a07565b610cf3565b3480156103d857600080fd5b506069546103ec906001600160a01b031681565b6040516001600160a01b039091168152602001610295565b34801561041057600080fd5b506102cb61041f3660046139ea565b60716020526000908152604090205481565b34801561043d57600080fd5b5061026c61044c366004613bbc565b61115a565b34801561045d57600080fd5b506103ec61046c366004613bde565b611296565b34801561047d57600080fd5b5061026c61048c366004613bde565b6112c0565b34801561049d57600080fd5b506103ec6104ac366004613bde565b611522565b3480156104bd57600080fd5b5061026c6104cc366004613c42565b611535565b3480156104dd57600080fd5b506102cb6104ec3660046139ea565b6001600160a01b031660009081526033602052604090205490565b34801561051357600080fd5b506102cb606a5481565b34801561052957600080fd5b5061026c610538366004613cbb565b611935565b34801561054957600080fd5b506102cb610558366004613cf4565b611b1d565b34801561056957600080fd5b506067546103ec906001600160a01b031681565b34801561058957600080fd5b506102cb60775481565b34801561059f57600080fd5b50610288611b5f565b3480156105b457600080fd5b5061026c611b6e565b3480156105c957600080fd5b506102cb60765481565b3480156105df57600080fd5b506102f96105ee366004613a07565b611cd8565b3480156105ff57600080fd5b506102cb61060e3660046139ea565b606f6020526000908152604090205481565b34801561062c57600080fd5b506102f961063b366004613a07565b611d73565b34801561064c57600080fd5b506066546103ec906001600160a01b031681565b34801561066c57600080fd5b506102cb61067b366004613a07565b611d80565b34801561068c57600080fd5b506102f961069b3660046139ea565b611e78565b3480156106ac57600080fd5b506102cb6106bb366004613a07565b611e85565b3480156106cc57600080fd5b506102cb60745481565b3480156106e257600080fd5b5061026c6106f1366004613e95565b611f0b565b34801561070257600080fd5b506068546103ec906001600160a01b031681565b34801561072257600080fd5b506102cb6107313660046139ea565b60706020526000908152604090205481565b34801561074f57600080fd5b506102cb606b5481565b34801561076557600080fd5b50606d546102cb565b34801561077a57600080fd5b506102cb610789366004613f8a565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3480156107c057600080fd5b5061026c6107cf366004613fb8565b61223d565b3480156107e057600080fd5b5061026c6107ef366004613b27565b612381565b34801561080057600080fd5b506102cb6125f2565b34801561081557600080fd5b506102cb6108243660046139ea565b606e6020526000908152604090205481565b34801561084257600080fd5b506073546102f99060ff1681565b60606036805461085f90613fd5565b80601f016020809104026020016040519081016040528092919081815260200182805461088b90613fd5565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108ef338484612603565b50600192915050565b6000610905848484612728565b6001600160a01b03841660009081526034602090815260408083203384529091529020548281101561098a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610263565b61099e85336109998685614026565b612603565b506001949350505050565b600260655414156109cc5760405162461bcd60e51b81526004016102639061403d565b60026065556068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401610a0f929190614074565b60206040518083038186803b158015610a2757600080fd5b505afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f919061408b565b80610ae657506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b8152600401610a96929190614074565b60206040518083038186803b158015610aae57600080fd5b505afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae6919061408b565b610b025760405162461bcd60e51b8152600401610263906140a8565b607854606d8054604080516020808402820181019092528281526001600160a01b039094169360009390929091830182828015610b6857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b4a575b5050505050905073c605ad802df6d60a3c5db21105abdf920769674463d9b218d68285610b923390565b6068546040516001600160e01b031960e087901b168152610bca949392916001600160a01b0316908990607190607090600401614142565b60006040518083038186803b158015610be257600080fd5b505af4158015610bf6573d6000803e3d6000fd5b505050506000341115610c6f57816001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c3e57600080fd5b505af1158015610c52573d6000803e3d6000fd5b50505050503460766000828254610c69919061419c565b90915550505b610c79600061280c565b7f0cb2261dfd922a76fc8645df1c965dba91e088cc4a64b423729dee569e1b8aa38184604051610caa9291906141b4565b60405180910390a15050600160655550565b3360008181526034602090815260408083206001600160a01b038716845290915281205490916108ef91859061099990869061419c565b600060026065541415610d185760405162461bcd60e51b81526004016102639061403d565b60026065556068546078546000916001600160a01b0390811691168233604051638cad785f60e01b81526001600160a01b03808a16600483015260248201899052808316604483015280851660648301528516608482015290915073c605ad802df6d60a3c5db21105abdf920769674490638cad785f9060a401604080518083038186803b158015610da957600080fd5b505af4158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de191906141e2565b9097509350610df1607a88612997565b610e385760405162461bcd60e51b81526020600482015260186024820152774e6f7420616c6c6f77656420746f6b656e20746f2070617960401b6044820152606401610263565b606a54421015610e5a5760405162461bcd60e51b815260040161026390614210565b606b544210610ea5576000612710610e73866032614234565b610e7d9190614253565b90508060766000828254610e91919061419c565b90915550610ea190508186614026565b9450505b6000606d805480602002602001604051908101604052809291908181526020018280548015610efd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610edf575b50506040805180820182526001600160a01b03808a1682528a1660208201529051630a9e603f60e21b815294955060009485945073c605ad802df6d60a3c5db21105abdf92076967449350632a7980fc9250610f66918b91889190606e906072906004016142a1565b60006040518083038186803b158015610f7e57600080fd5b505af4158015610f92573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fba9190810190614342565b60405163e92c2a8560e01b81529193509150734f8356003297596a7c42bd97a74ce844b45090f59063e92c2a859061100090869086908690606f906070906004016143a5565b60006040518083038186803b15801561101857600080fd5b505af415801561102c573d6000803e3d6000fd5b50505050600073c605ad802df6d60a3c5db21105abdf920769674463c06583d885858561105860355490565b6012606754606c546040516001600160e01b031960e08a901b1681526110909796959493926001600160a01b031691906004016143f3565b60206040518083038186803b1580156110a857600080fd5b505af41580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e0919061445f565b90506110ec85826129b9565b6110f6600061280c565b8a6001600160a01b0316856001600160a01b03167fb2c4a30fa11cbe92c0de28206ecf872051f0bde11502e7adb4b024037c9c5f6d8c84888860405161113f9493929190614478565b60405180910390a360016065559a9950505050505050505050565b6068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401611198929190614074565b60206040518083038186803b1580156111b057600080fd5b505afa1580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e8919061408b565b8061126f57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b815260040161121f929190614074565b60206040518083038186803b15801561123757600080fd5b505afa15801561124b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126f919061408b565b61128b5760405162461bcd60e51b8152600401610263906140a8565b607491909155607555565b606d81815481106112a657600080fd5b6000918252602090912001546001600160a01b0316905081565b600260655414156112e35760405162461bcd60e51b81526004016102639061403d565b60026065556068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401611326929190614074565b60206040518083038186803b15801561133e57600080fd5b505afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611376919061408b565b806113fd57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b81526004016113ad929190614074565b60206040518083038186803b1580156113c557600080fd5b505afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd919061408b565b6114195760405162461bcd60e51b8152600401610263906140a8565b6101f4811015801561142d57506107d08111155b61146e5760405162461bcd60e51b815260206004820152601260248201527157726f6e6720582070657263656e7461676560701b6044820152606401610263565b6040516316049a8960e01b8152734f8356003297596a7c42bd97a74ce844b45090f5906316049a89906114b1908490606d90606f906070906072906004016144e7565b60006040518083038186803b1580156114c957600080fd5b505af41580156114dd573d6000803e3d6000fd5b505050507f5f6df48d9482538d8064e41fe6178d5a61880fc1d0146c7fb7d49967c562577d8160405161151291815260200190565b60405180910390a1506001606555565b600061152f607a83612a86565b92915050565b6068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401611573929190614074565b60206040518083038186803b15801561158b57600080fd5b505afa15801561159f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c3919061408b565b8061164a57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b81526004016115fa929190614074565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a919061408b565b6116665760405162461bcd60e51b8152600401610263906140a8565b600260655414156116895760405162461bcd60e51b81526004016102639061403d565b6002606555606b544210156116b05760405162461bcd60e51b815260040161026390614210565b60685460405163046e032360e21b815273c605ad802df6d60a3c5db21105abdf9207696744916311b80c8c916116f691889188916001600160a01b03169060040161455b565b60006040518083038186803b15801561170e57600080fd5b505af4158015611722573d6000803e3d6000fd5b5050606d80546040805160208084028201810190925282815260009550935083018282801561177a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161175c575b5050606754604051632314d85d60e21b815294955060009485945073c605ad802df6d60a3c5db21105abdf92076967449350638c53617492506117d09187916001600160a01b0390911690607290600401614587565b60006040518083038186803b1580156117e857600080fd5b505af41580156117fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611824919081019061461c565b60405163661385c160e11b8152919350915073c605ad802df6d60a3c5db21105abdf92076967449063cc270b829061186b908a908a908a908a908a90606e90600401614698565b60006040518083038186803b15801561188357600080fd5b505af4158015611897573d6000803e3d6000fd5b506118aa9250606d915089905088613876565b506118ea8383838a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509250612a92915050565b7fd48e281c97815f49e22407165b3acc62fd704ebeb00521b36b8342dae9e9bc808787878760405161191f94939291906146e7565b60405180910390a1505060016065555050505050565b6068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401611973929190614074565b60206040518083038186803b15801561198b57600080fd5b505afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c3919061408b565b80611a4a57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b81526004016119fa929190614074565b60206040518083038186803b158015611a1257600080fd5b505afa158015611a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4a919061408b565b611a665760405162461bcd60e51b8152600401610263906140a8565b60026065541415611a895760405162461bcd60e51b81526004016102639061403d565b6002606555606854604051632b9e183560e01b81526001600160a01b03808516600483015283151560248301529091166044820152607a606482015273c605ad802df6d60a3c5db21105abdf920769674490632b9e18359060840160006040518083038186803b158015611afc57600080fd5b505af4158015611b10573d6000803e3d6000fd5b5050600160655550505050565b600060026065541415611b425760405162461bcd60e51b81526004016102639061403d565b6002606555611b5383836000612df9565b60016065559392505050565b60606037805461085f90613fd5565b60026065541415611b915760405162461bcd60e51b81526004016102639061403d565b60026065556068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b8152600401611bd4929190614074565b60206040518083038186803b158015611bec57600080fd5b505afa158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c24919061408b565b80611cab57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b8152600401611c5b929190614074565b60206040518083038186803b158015611c7357600080fd5b505afa158015611c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cab919061408b565b611cc75760405162461bcd60e51b8152600401610263906140a8565b611cd1600161280c565b6001606555565b3360009081526034602090815260408083206001600160a01b038616845290915281205482811015611d5a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610263565b611d6933856109998685614026565b5060019392505050565b60006108ef338484612728565b60408051606080820183526078546001600160a01b0390811683526068548116602084015260675416828401528251908101909252600091734f8356003297596a7c42bd97a74ce844b45090f591638ee47d219185918791606d919080611de660355490565b815260126020820152606c54604091820152516001600160e01b031960e088901b168152611e21959493929190606e9060729060040161474a565b60206040518083038186803b158015611e3957600080fd5b505af4158015611e4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e71919061445f565b9392505050565b600061152f607a83612997565b6000734f8356003297596a7c42bd97a74ce844b45090f56346c9fdf46040518060400160405280858152602001611ebb60355490565b90526040805180820182526078546001600160a01b03908116825260685416602082015290516001600160e01b031960e085901b168152611e2192918891606d9190607290606f90600401614807565b600054610100900460ff1680611f24575060005460ff16155b611f405760405162461bcd60e51b81526004016102639061485c565b600054610100900460ff16158015611f62576000805461ffff19166101011790555b8a5160208c0151611f739190613363565b6001600160a01b038216611fbd5760405162461bcd60e51b81526020600482015260116024820152704e6f742076616c6964206164647265737360781b6044820152606401610263565b88514211801590611fd2575060208901518951105b61200b5760405162461bcd60e51b815260206004820152600a6024820152692a34b6b29032b93937b960b11b6044820152606401610263565b8851606a556020890151606b55604089015161205f5760405162461bcd60e51b815260206004820152601360248201527224b734ba34b0b610383934b1b29032b93937b960691b6044820152606401610263565b604089810151606c558a51606780546001600160a01b03199081166001600160a01b03938416179091558c83015160788054831691841691909117905560208d015160668054831691841691909117905560698054909116858316179055606854915162f82bff60e01b815291169073c605ad802df6d60a3c5db21105abdf92076967449062f82bff906120fe908c908c908690607a906004016148c0565b60006040518083038186803b15801561211657600080fd5b505af415801561212a573d6000803e3d6000fd5b505060405163046e032360e21b815273c605ad802df6d60a3c5db21105abdf920769674492506311b80c8c9150612169908a908a90869060040161455b565b60006040518083038186803b15801561218157600080fd5b505af4158015612195573d6000803e3d6000fd5b506121a89250606d915089905088613876565b5060405163661385c160e11b815273c605ad802df6d60a3c5db21105abdf92076967449063cc270b82906121ed908a908a908a908a9084908490606e906004016148f0565b60006040518083038186803b15801561220557600080fd5b505af4158015612219573d6000803e3d6000fd5b50505050508015612230576000805461ff00191690555b5050505050505050505050565b6068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b815260040161227b929190614074565b60206040518083038186803b15801561229357600080fd5b505afa1580156122a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cb919061408b565b8061235257506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b8152600401612302929190614074565b60206040518083038186803b15801561231a57600080fd5b505afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612352919061408b565b61236e5760405162461bcd60e51b8152600401610263906140a8565b6073805460ff1916911515919091179055565b600260655414156123a45760405162461bcd60e51b81526004016102639061403d565b60026065556068546001600160a01b03166391d14854600080516020614f89833981519152336040518363ffffffff1660e01b81526004016123e7929190614074565b60206040518083038186803b1580156123ff57600080fd5b505afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612437919061408b565b806124be57506068546001600160a01b03166391d148546000336040518363ffffffff1660e01b815260040161246e929190614074565b60206040518083038186803b15801561248657600080fd5b505afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be919061408b565b6124da5760405162461bcd60e51b8152600401610263906140a8565b6000606d80548060200260200160405190810160405280929190818152602001828054801561253257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612514575b5050505050905073c605ad802df6d60a3c5db21105abdf920769674463164a52c8828461255c3390565b607060716040518663ffffffff1660e01b8152600401612580959493929190614941565b60006040518083038186803b15801561259857600080fd5b505af41580156125ac573d6000803e3d6000fd5b505050507f745a63c6d1dca6a72f4b14ff6df81c9b35e5f1fc96ddfb86bd44866a129afcac81836040516125e19291906141b4565b60405180910390a150506001606555565b60006125fe607a6133e2565b905090565b6001600160a01b0383166126655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610263565b6001600160a01b0382166126c65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610263565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b606654606b546001600160a01b03909116904210156127595760405162461bcd60e51b81526004016102639061498d565b806001600160a01b0316846001600160a01b03161415801561278d5750806001600160a01b0316836001600160a01b031614155b156127fb5760006127106127a2846019614234565b6127ac9190614253565b90506127c285856127bd8487614026565b6133ec565b80156127f55780607760008282546127da919061419c565b909155506127eb90508530836133ec565b6127f5600061280c565b50612806565b6128068484846133ec565b50505050565b607654600090801580159061282a5750828061282a57506074548110155b156128a157607854604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561287557600080fd5b505af1158015612889573d6000803e3d6000fd5b505050508082612899919061419c565b600060765591505b5060775480158015906128bd575082806128bd57506075548110155b1561291d576128cf8160006001612df9565b90506128db818361419c565b600060775560408051838152602081018490529193507fa7d1524e3da5e49955177e8b5b322d5b9b382a28cc300195ceec213655416217910160405180910390a15b8115612992576069546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561295d573d6000803e3d6000fd5b506040518281527f102c65743eebfaf930184c4ec05cb006f4260c2db2fb204086f41e09fc490ea49060200160405180910390a15b505050565b6001600160a01b03811660009081526001830160205260408120541515611e71565b6001600160a01b038216612a0f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610263565b8060356000828254612a21919061419c565b90915550506001600160a01b03821660009081526033602052604081208054839290612a4e90849061419c565b90915550506040518181526001600160a01b03831690600090600080516020614fa98339815191529060200160405180910390a35050565b6000611e7183836135b2565b606754604051639fd6a55360e01b8152600091829173c605ad802df6d60a3c5db21105abdf920769674491639fd6a55391612ae29188918a91606e916001600160a01b03909116906004016149b4565b60006040518083038186803b158015612afa57600080fd5b505af4158015612b0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b369190810190614a79565b91509150612b426138d9565b60405163092f8c7160e31b8152734f8356003297596a7c42bd97a74ce844b45090f59063497c638890612b81908b908b908a9089908990600401614b23565b60006040518083038186803b158015612b9957600080fd5b505af4158015612bad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bd59190810190614b84565b607854606854604051630e1c225f60e31b8152949b509296509093506001600160a01b039081169291169060009073c605ad802df6d60a3c5db21105abdf9207696744906370e112f890612c36908e908e9088908890607290600401614c37565b60206040518083038186803b158015612c4e57600080fd5b505af4158015612c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c86919061445f565b9050600073c605ad802df6d60a3c5db21105abdf9207696744639516ca878a898888888860726040518863ffffffff1660e01b8152600401612cce9796959493929190614c81565b60006040518083038186803b158015612ce657600080fd5b505af4158015612cfa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d229190810190614cea565b905087612da757734f8356003297596a7c42bd97a74ce844b45090f563827ad2318d8d600160200201518c85606f607060726040518863ffffffff1660e01b8152600401612d769796959493929190614d26565b60006040518083038186803b158015612d8e57600080fd5b505af4158015612da2573d6000803e3d6000fd5b505050505b60208b01516040517f57b8c73f433d68d711d5277fb1e3df727501fed6d87b9b02fd1bc19303f7de3391612de3918f91908d9086908e90614d93565b60405180910390a1505050505050505050505050565b60008060018315151415612e0e575030612e33565b606b54421015612e305760405162461bcd60e51b81526004016102639061498d565b50335b6040805180820182526068546001600160a01b03908116825260785481166020830181905292516342d1129d60e01b815290871660048201526024810192909252607a60448301529073c605ad802df6d60a3c5db21105abdf9207696744906342d1129d9060640160006040518083038186803b158015612eb357600080fd5b505af4158015612ec7573d6000803e3d6000fd5b505050506000612ed660355490565b9050612ee28388613638565b60606000606d805480602002602001604051908101604052809291908181526020018280548015612f3c57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612f1e575b50505050509050861515600115151415612f9a5780516001600160401b03811115612f6957612f69613a74565b604051908082528060200260200182016040528015612f92578160200160208202803683370190505b50915061302e565b6040516341f9884760e01b815273c605ad802df6d60a3c5db21105abdf9207696744906341f9884790612fd7908490607290606f90600401614df5565b60006040518083038186803b158015612fef57600080fd5b505af4158015613003573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261302b9190810190614cea565b91505b600080600073c605ad802df6d60a3c5db21105abdf92076967446302de95d260405180604001604052808f81526020018981525060405180608001604052808c6001600160a01b03166001600160a01b031681526020018f6001600160a01b03166001600160a01b031681526020018b6001600281106130b0576130b06148aa565b602090810291909101516001600160a01b0390811683528d511691015260405160e084901b6001600160e01b03191681526130f69291906072908a908c90600401614e1a565b60006040518083038186803b15801561310e57600080fd5b505af4158015613122573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261314a9190810190614e89565b92509250925060008311801561316857506001600160a01b038b1615155b8015613184575060208701516001600160a01b038c8116911614155b15613255576040805180820182526001600160a01b038d8116825260208a810151909116908201528851915163c887891560e01b815273c605ad802df6d60a3c5db21105abdf92076967449263c8878915926131e99290918891600090600401614ed9565b60206040518083038186803b15801561320157600080fd5b505af4158015613215573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613239919061445f565b6076600082825461324a919061419c565b909155506132739050565b821561327357826076600082825461326d919061419c565b90915550505b60735460405163f0865e9360e01b8152734f8356003297596a7c42bd97a74ce844b45090f59163f0865e93916132be9160729160ff90911690606f906070908b908a90600401614f0b565b60006040518083038186803b1580156132d657600080fd5b505af41580156132ea573d6000803e3d6000fd5b5050508a1515905061335457613300600061280c565b8a6001600160a01b0316886001600160a01b03167fc0ecdb8af5bfee1c4130c57e0f12887ae92843865271eb213ad1d75474f053e8838f88878b60405161334b959493929190614f57565b60405180910390a35b9b9a5050505050505050505050565b600054610100900460ff168061337c575060005460ff16155b6133985760405162461bcd60e51b81526004016102639061485c565b600054610100900460ff161580156133ba576000805461ffff19166101011790555b6133c2613775565b6133cc83836137e1565b8015612992576000805461ff0019169055505050565b600061152f825490565b6001600160a01b0383166134505760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610263565b6001600160a01b0382166134b25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610263565b6001600160a01b0383166000908152603360205260409020548181101561352a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610263565b6135348282614026565b6001600160a01b03808616600090815260336020526040808220939093559085168152908120805484929061356a90849061419c565b92505081905550826001600160a01b0316846001600160a01b0316600080516020614fa9833981519152846040516135a491815260200190565b60405180910390a350505050565b815460009082106136105760405162461bcd60e51b815260206004820152602260248201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604482015261647360f01b6064820152608401610263565b826000018281548110613625576136256148aa565b9060005260206000200154905092915050565b6001600160a01b0382166136985760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610263565b6001600160a01b0382166000908152603360205260409020548181101561370c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610263565b6137168282614026565b6001600160a01b03841660009081526033602052604081209190915560358054849290613744908490614026565b90915550506040518281526000906001600160a01b03851690600080516020614fa98339815191529060200161271b565b600054610100900460ff168061378e575060005460ff16155b6137aa5760405162461bcd60e51b81526004016102639061485c565b600054610100900460ff161580156137cc576000805461ffff19166101011790555b80156137de576000805461ff00191690555b50565b600054610100900460ff16806137fa575060005460ff16155b6138165760405162461bcd60e51b81526004016102639061485c565b600054610100900460ff16158015613838576000805461ffff19166101011790555b825161384b9060369060208601906138f7565b50815161385f9060379060208501906138f7565b508015612992576000805461ff0019169055505050565b8280548282559060005260206000209081019282156138c9579160200282015b828111156138c95781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613896565b506138d592915061396b565b5090565b60405180604001604052806002906020820280368337509192915050565b82805461390390613fd5565b90600052602060002090601f01602090048101928261392557600085556138c9565b82601f1061393e57805160ff19168380011785556138c9565b828001600101855582156138c9579182015b828111156138c9578251825591602001919060010190613950565b5b808211156138d5576000815560010161396c565b600060208083528351808285015260005b818110156139ad57858101830151858201604001528201613991565b818111156139bf576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146137de57600080fd5b6000602082840312156139fc57600080fd5b8135611e71816139d5565b60008060408385031215613a1a57600080fd5b8235613a25816139d5565b946020939093013593505050565b600080600060608486031215613a4857600080fd5b8335613a53816139d5565b92506020840135613a63816139d5565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613aac57613aac613a74565b60405290565b604051606081016001600160401b0381118282101715613aac57613aac613a74565b604051601f8201601f191681016001600160401b0381118282101715613afc57613afc613a74565b604052919050565b60006001600160401b03821115613b1d57613b1d613a74565b5060051b60200190565b60006020808385031215613b3a57600080fd5b82356001600160401b03811115613b5057600080fd5b8301601f81018513613b6157600080fd5b8035613b74613b6f82613b04565b613ad4565b81815260059190911b82018301908381019087831115613b9357600080fd5b928401925b82841015613bb157833582529284019290840190613b98565b979650505050505050565b60008060408385031215613bcf57600080fd5b50508035926020909101359150565b600060208284031215613bf057600080fd5b5035919050565b60008083601f840112613c0957600080fd5b5081356001600160401b03811115613c2057600080fd5b6020830191508360208260051b8501011115613c3b57600080fd5b9250929050565b60008060008060408587031215613c5857600080fd5b84356001600160401b0380821115613c6f57600080fd5b613c7b88838901613bf7565b90965094506020870135915080821115613c9457600080fd5b50613ca187828801613bf7565b95989497509550505050565b80151581146137de57600080fd5b60008060408385031215613cce57600080fd5b8235613cd9816139d5565b91506020830135613ce981613cad565b809150509250929050565b60008060408385031215613d0757600080fd5b823591506020830135613ce9816139d5565b6000601f8381840112613d2b57600080fd5b613d33613a8a565b806040850186811115613d4557600080fd5b855b81811015613ddb5780356001600160401b0380821115613d675760008081fd5b81890191508987830112613d7b5760008081fd5b8135602082821115613d8f57613d8f613a74565b613da0828a01601f19168201613ad4565b92508183528b81838601011115613db75760008081fd5b81818501828501376000918301810191909152908652949094019350602001613d47565b50909695505050505050565b600082601f830112613df857600080fd5b613e00613ab2565b806060840185811115613e1257600080fd5b845b81811015613e35578035613e27816139d5565b845260209384019301613e14565b509095945050505050565b600082601f830112613e5157600080fd5b613e59613ab2565b806060840185811115613e6b57600080fd5b845b81811015613e35578035845260209384019301613e6d565b8035613e90816139d5565b919050565b6000806000806000806000806000806101608b8d031215613eb557600080fd5b8a356001600160401b0380821115613ecc57600080fd5b613ed88e838f01613d19565b9b50613ee78e60208f01613de7565b9a50613ef68e60808f01613e40565b995060e08d0135915080821115613f0c57600080fd5b613f188e838f01613bf7565b90995097506101008d0135915080821115613f3257600080fd5b613f3e8e838f01613bf7565b90975095506101208d0135915080821115613f5857600080fd5b50613f658d828e01613bf7565b9094509250613f7990506101408c01613e85565b90509295989b9194979a5092959850565b60008060408385031215613f9d57600080fd5b8235613fa8816139d5565b91506020830135613ce9816139d5565b600060208284031215613fca57600080fd5b8135611e7181613cad565b600181811c90821680613fe957607f821691505b6020821081141561400a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561403857614038614010565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b9182526001600160a01b0316602082015260400190565b60006020828403121561409d57600080fd5b8151611e7181613cad565b6020808252600c908201526b20b1b1b2b9b99032b93937b960a11b604082015260600190565b600081518084526020808501945080840160005b838110156141075781516001600160a01b0316875295820195908201906001016140e2565b509495945050505050565b600081518084526020808501945080840160005b8381101561410757815187529582019590820190600101614126565b60e08152600061415560e083018a6140ce565b8281036020840152614167818a614112565b6001600160a01b0398891660408501529688166060840152505092909416608083015260a082015260c0019190915292915050565b600082198211156141af576141af614010565b500190565b6040815260006141c760408301856140ce565b82810360208401526141d98185614112565b95945050505050565b600080604083850312156141f557600080fd5b8251614200816139d5565b6020939093015192949293505050565b6020808252600a9082015269139bdd081bdc195b995960b21b604082015260600190565b600081600019048311821515161561424e5761424e614010565b500290565b60008261427057634e487b7160e01b600052601260045260246000fd5b500490565b8060005b60028110156128065781516001600160a01b0316845260209384019390910190600101614279565b85815260c0602082015260006142ba60c08301876140ce565b90506142c96040830186614275565b608082019390935260a001529392505050565b600082601f8301126142ed57600080fd5b815160206142fd613b6f83613b04565b82815260059290921b8401810191818101908684111561431c57600080fd5b8286015b848110156143375780518352918301918301614320565b509695505050505050565b6000806040838503121561435557600080fd5b82516001600160401b038082111561436c57600080fd5b614378868387016142dc565b9350602085015191508082111561438e57600080fd5b5061439b858286016142dc565b9150509250929050565b60a0815260006143b860a08301886140ce565b82810360208401526143ca8188614112565b905082810360408401526143de8187614112565b60608401959095525050608001529392505050565b60e08152600061440660e083018a6140ce565b8281036020840152614418818a614112565b9050828103604084015261442c8189614112565b6060840197909752505060ff9390931660808401526001600160a01b039190911660a083015260c0909101529392505050565b60006020828403121561447157600080fd5b5051919050565b84815283602082015260806040820152600061449760808301856140ce565b8281036060840152613bb18185614112565b6000815480845260208085019450836000528060002060005b838110156141075781546001600160a01b0316875295820195600191820191016144c2565b85815260a06020820152600061450060a08301876144a9565b604083019590955250606081019290925260809091015292915050565b8183526000602080850194508260005b85811015614107578135614540816139d5565b6001600160a01b03168752958201959082019060010161452d565b60408152600061456f60408301858761451d565b905060018060a01b0383166020830152949350505050565b60608152600061459a60608301866140ce565b6001600160a01b039490941660208301525060400152919050565b600082601f8301126145c657600080fd5b6145ce613ab2565b8060608401858111156145e057600080fd5b845b81811015613e355780516001600160401b038111156146015760008081fd5b61460d888289016142dc565b855250602093840193016145e2565b6000806040838503121561462f57600080fd5b82516001600160401b0381111561464557600080fd5b614651858286016145b5565b925050602083015190509250929050565b81835260006001600160fb1b0383111561467b57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6080815260006146ac60808301888a61451d565b82810360208401526146bf818789614662565b905082810360408401526146d381866140ce565b915050826060830152979650505050505050565b6040808252810184905260008560608301825b8781101561472a57823561470d816139d5565b6001600160a01b03168252602092830192909101906001016146fa565b50838103602085015261473e818688614662565b98975050505050505050565b6000610160898352602060018060a01b03808b16828601528260408601526147748386018b6144a9565b93506060850192508860005b600381101561479f578151831685529383019390830190600101614780565b50505060c0840191508660005b60038110156147c9578151845292820192908201906001016147ac565b50505050610120820193909352610140015295945050505050565b8060005b60028110156128065781518452602093840193909101906001016147e8565b6000610100614816838a6147e4565b6001600160a01b038816604084015260608301819052614838818401886144a9565b9150506148486080830186614275565b60c082019390935260e00152949350505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6060815260006148d460608301868861451d565b6001600160a01b03949094166020830152506040015292915050565b60808152600061490460808301898b61451d565b828103602084015261491781888a614662565b9050828103604084015261492c81868861451d565b91505082606083015298975050505050505050565b60a08152600061495460a08301886140ce565b82810360208401526149668188614112565b6001600160a01b039690961660408401525050606081019290925260809091015292915050565b6020808252600d908201526c125b59481b9bdd08195b991959609a1b604082015260600190565b6080815260006149c760808301876140ce565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b600082601f8301126149fd57600080fd5b60405160a081016001600160401b038082118383101715614a2057614a20613a74565b8160405282915060a0850186811115614a3857600080fd5b855b81811015614a6d57805183811115614a525760008081fd5b614a5e89828a016142dc565b85525060209384019301614a3a565b50929695505050505050565b60008060408385031215614a8c57600080fd5b82516001600160401b0380821115614aa357600080fd5b614378868387016149ec565b600082606081018360005b6003811015613e35578383038752614ad3838351614112565b6020978801979093509190910190600101614aba565b60008260a081018360005b6005811015613e35578383038752614b0d838351614112565b6020978801979093509190910190600101614af4565b60a081526000614b3660a08301886140ce565b8281036020840152614b488188614aaf565b90508281036040840152614b5c81876140ce565b90508281036060840152614b708186614ae9565b9050828103608084015261473e8185614112565b600080600060808486031215614b9957600080fd5b83516001600160401b0380821115614bb057600080fd5b614bbc878388016145b5565b9450602091508186015181811115614bd357600080fd5b614bdf888289016149ec565b9450505085605f860112614bf257600080fd5b614bfa613a8a565b806080870188811115614c0c57600080fd5b604088015b81811015614c285780518452928401928401614c11565b50508093505050509250925092565b60a081526000614c4a60a08301886140ce565b8281036020840152614c5c8188614aaf565b6001600160a01b03968716604085015294909516606083015250608001529392505050565b6000610100808352614c958184018b6140ce565b90508281036020840152614ca9818a614ae9565b915050614cb960408301886147e4565b6001600160a01b0395861660808301529390941660a085015260c084019190915260e0909201919091529392505050565b600060208284031215614cfc57600080fd5b81516001600160401b03811115614d1257600080fd5b614d1e848285016142dc565b949350505050565b60e081526000614d3960e083018a6140ce565b8281036020840152614d4b818a614112565b90508281036040840152614d5f81896140ce565b90508281036060840152614d738188614112565b6080840196909652505060a081019290925260c090910152949350505050565b60a081526000614da660a08301886140ce565b8281036020840152614db88188614112565b90508281036040840152614dcc81876140ce565b90508281036060840152614de08186614112565b91505082151560808301529695505050505050565b606081526000614e0860608301866140ce565b60208301949094525060400152919050565b6000610120614e2983896147e4565b604083018760005b6004811015614e595781516001600160a01b0316835260209283019290910190600101614e31565b5050508560c08401528060e0840152614e74818401866140ce565b905082810361010084015261473e8185614112565b600080600060608486031215614e9e57600080fd5b835160208501519093506001600160401b03811115614ebc57600080fd5b614ec8868287016142dc565b925050604084015190509250925092565b60a08101614ee78287614275565b60408201949094526001600160a01b03929092166060830152608090910152919050565b868152851515602082015284604082015283606082015260c060808201526000614f3860c08301856140ce565b82810360a0840152614f4a8185614112565b9998505050505050505050565b85815284602082015260a060408201526000614f7660a08301866140ce565b8281036060840152614b70818661411256fe241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220199dc38b6ecbd6183b66d50f198edbc1a33d0be66c7f98a81f787a31900f483764736f6c63430008090033