[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "AmountLessThanMinIncentiveRate", "type": "error" }, { "inputs": [], "name": "BlockDoesNotExist", "type": "error" }, { "inputs": [], "name": "BlockNotInBuffer", "type": "error" }, { "inputs": [], "name": "CannotRecoverRewardToken", "type": "error" }, { "inputs": [], "name": "CannotRecoverStakingToken", "type": "error" }, { "inputs": [], "name": "DelegateStakedOverflow", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "InsolventReward", "type": "error" }, { "inputs": [], "name": "InsufficientDelegateStake", "type": "error" }, { "inputs": [], "name": "InsufficientSelfStake", "type": "error" }, { "inputs": [], "name": "InsufficientStake", "type": "error" }, { "inputs": [], "name": "InvalidCommission", "type": "error" }, { "inputs": [], "name": "InvalidCuttingBoardWeights", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidMaxIncentiveTokensCount", "type": "error" }, { "inputs": [], "name": "InvalidMinter", "type": "error" }, { "inputs": [], "name": "InvalidStartBlock", "type": "error" }, { "inputs": [], "name": "InvariantCheckFailed", "type": "error" }, { "inputs": [], "name": "MaxNumWeightsPerCuttingBoardIsZero", "type": "error" }, { "inputs": [], "name": "NoWhitelistedTokens", "type": "error" }, { "inputs": [], "name": "NotActionableBlock", "type": "error" }, { "inputs": [], "name": "NotApprovedSender", "type": "error" }, { "inputs": [], "name": "NotBGT", "type": "error" }, { "inputs": [], "name": "NotBlockRewardController", "type": "error" }, { "inputs": [], "name": "NotDelegate", "type": "error" }, { "inputs": [], "name": "NotDistributor", "type": "error" }, { "inputs": [], "name": "NotEnoughBalance", "type": "error" }, { "inputs": [], "name": "NotEnoughTime", "type": "error" }, { "inputs": [], "name": "NotFeeCollector", "type": "error" }, { "inputs": [], "name": "NotFriendOfTheChef", "type": "error" }, { "inputs": [], "name": "NotGovernance", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "NotOperator", "type": "error" }, { "inputs": [], "name": "NotProver", "type": "error" }, { "inputs": [], "name": "NotRootFollower", "type": "error" }, { "inputs": [], "name": "NotValidatorOrOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "PayoutAmountIsZero", "type": "error" }, { "inputs": [], "name": "PayoutTokenIsZero", "type": "error" }, { "inputs": [], "name": "QueuedCuttingBoardNotFound", "type": "error" }, { "inputs": [], "name": "QueuedCuttingBoardNotReady", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "RewardCycleNotEnded", "type": "error" }, { "inputs": [], "name": "StakeAmountIsZero", "type": "error" }, { "inputs": [], "name": "TokenAlreadyWhitelistedOrLimitReached", "type": "error" }, { "inputs": [], "name": "TokenNotWhitelisted", "type": "error" }, { "inputs": [], "name": "TooManyWeights", "type": "error" }, { "inputs": [], "name": "TotalSupplyOverflow", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "VaultAlreadyExists", "type": "error" }, { "inputs": [], "name": "WithdrawAmountIsZero", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DelegateStaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DelegateWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "distributor", "type": "address" } ], "name": "DistributorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "incentiveRate", "type": "uint256" } ], "name": "IncentiveAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" } ], "name": "IncentiveTokenRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "minIncentiveRate", "type": "uint256" } ], "name": "IncentiveTokenWhitelisted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "coinbase", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "bgtEmitted", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "IncentivesProcessed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "maxIncentiveTokensCount", "type": "uint8" } ], "name": "MaxIncentiveTokensCountUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "operator", "type": "address" } ], "name": "OperatorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newDuration", "type": "uint256" } ], "name": "RewardsDurationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "inputs": [], "name": "REWARD_TOKEN", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "STAKE_TOKEN", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "incentiveRate", "type": "uint256" } ], "name": "addIncentive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "beraChef", "outputs": [ { "internalType": "contract IBeraChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "distributor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "exit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "delegate", "type": "address" } ], "name": "getDelegateStake", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getRewardForDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getTotalDelegateStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistedTokensCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "incentives", "outputs": [ { "internalType": "uint256", "name": "minIncentiveRate", "type": "uint256" }, { "internalType": "uint256", "name": "incentiveRate", "type": "uint256" }, { "internalType": "uint256", "name": "amountRemaining", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bgt", "type": "address" }, { "internalType": "address", "name": "_distributor", "type": "address" }, { "internalType": "address", "name": "_berachef", "type": "address" }, { "internalType": "address", "name": "_governance", "type": "address" }, { "internalType": "address", "name": "_stakingToken", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxIncentiveTokensCount", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "enum IBerachainRewardsVault.Operation", "name": "op", "type": "uint8" } ], "name": "notifyATokenBalances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "coinbase", "type": "address" }, { "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_paused", "type": "bool" } ], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "periodFinish", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "removeIncentiveToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "rewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardDistribution", "type": "address" } ], "name": "setDistributor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "_maxIncentiveTokensCount", "type": "uint8" } ], "name": "setMaxIncentiveTokensCount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" } ], "name": "setOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardsDuration", "type": "uint256" } ], "name": "setRewardsDuration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "undistributedRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "userRewardPerTokenPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "minIncentiveRate", "type": "uint256" } ], "name": "whitelistIncentiveToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "whitelistedTokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50620000226200002860201b60201c565b6200019c565b60006200003a6200013260201b60201c565b90508060000160089054906101000a900460ff161562000086576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200012f5767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516200012691906200017f565b60405180910390a15b50565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b600067ffffffffffffffff82169050919050565b62000179816200015a565b82525050565b60006020820190506200019660008301846200016e565b92915050565b613a8680620001ac6000396000f3fe608060405234801561001057600080fd5b50600436106102735760003560e01c80638b87634711610151578063bfe10928116100c3578063df136d6511610087578063df136d6514610778578063e26f790014610796578063e7d379a9146107b4578063e9fad8ee146107d0578063ebe2b12b146107da578063f2fde38b146107f857610273565b8063bfe10928146106d2578063c00007b0146106f0578063c8f33c9114610720578063cc1a378f1461073e578063cd3daf9d1461075a57610273565b80639a307391116101155780639a307391146106005780639cd3f38414610630578063a4dbda3c1461064e578063b3ab15fb1461067e578063b42f60db1461069a578063b66503cf146106b657610273565b80638b876347146105485780638da5cb5b146105785780638f650f9c1461059657806391888f29146105c657806399248ea7146105e257610273565b806354659b94116101ea578063715018a6116101ae578063715018a61461049857806375619ab5146104a2578063774e900b146104be5780637b0a47ee146104f057806380faa57d1461050e5780638980f11f1461052c57610273565b806354659b94146103f257806357c609511461040e5780635c975abb1461042c57806367df5e011461044a57806370a082311461046857610273565b806318160ddd1161023c57806318160ddd1461032c5780631c1f78eb1461034a5780631c39b672146103685780632154bc4414610386578063319ce2bb146103b6578063386a9525146103d457610273565b80628cc2621461027857806302329a29146102a85780630700037d146102c45780630b48e7a2146102f45780631459457a14610310575b600080fd5b610292600480360381019061028d91906131f6565b610814565b60405161029f919061323c565b60405180910390f35b6102c260048036038101906102bd919061328f565b6108aa565b005b6102de60048036038101906102d991906131f6565b6108d1565b6040516102eb919061323c565b60405180910390f35b61030e6004803603810190610309919061330d565b61091d565b005b61032a60048036038101906103259190613360565b610cb7565b005b610334610ef6565b604051610341919061323c565b60405180910390f35b610352610efc565b60405161035f919061323c565b60405180910390f35b610370610f1a565b60405161037d919061343a565b60405180910390f35b6103a0600480360381019061039b9190613455565b610f3e565b6040516103ad9190613491565b60405180910390f35b6103be610f7d565b6040516103cb919061323c565b60405180910390f35b6103dc610f83565b6040516103e9919061323c565b60405180910390f35b61040c600480360381019061040791906134e5565b610f89565b005b610416611026565b6040516104239190613533565b60405180910390f35b61043461104c565b604051610441919061355d565b60405180910390f35b610452611071565b60405161045f9190613587565b60405180910390f35b610482600480360381019061047d91906131f6565b611084565b60405161048f919061323c565b60405180910390f35b6104a06110d0565b005b6104bc60048036038101906104b791906131f6565b6110e4565b005b6104d860048036038101906104d391906131f6565b6111d7565b6040516104e7939291906135a2565b60405180910390f35b6104f8611201565b604051610505919061323c565b60405180910390f35b610516611207565b604051610523919061323c565b60405180910390f35b610546600480360381019061054191906135d9565b61121a565b005b610562600480360381019061055d91906131f6565b611314565b60405161056f919061323c565b60405180910390f35b610580611360565b60405161058d9190613491565b60405180910390f35b6105b060048036038101906105ab9190613619565b611398565b6040516105bd919061323c565b60405180910390f35b6105e060048036038101906105db91906135d9565b611422565b005b6105ea611594565b6040516105f7919061343a565b60405180910390f35b61061a600480360381019061061591906131f6565b6115ba565b6040516106279190613491565b60405180910390f35b610638611623565b604051610645919061323c565b60405180910390f35b610668600480360381019061066391906131f6565b611630565b604051610675919061323c565b60405180910390f35b610698600480360381019061069391906131f6565b61167c565b005b6106b460048036038101906106af9190613659565b611736565b005b6106d060048036038101906106cb91906135d9565b611936565b005b6106da6119d2565b6040516106e79190613491565b60405180910390f35b61070a600480360381019061070591906131f6565b6119f8565b604051610717919061323c565b60405180910390f35b610728611b13565b604051610735919061323c565b60405180910390f35b61075860048036038101906107539190613455565b611b19565b005b610762611b2d565b60405161076f919061323c565b60405180910390f35b610780611b7a565b60405161078d919061323c565b60405180910390f35b61079e611b80565b6040516107ab919061376a565b60405180910390f35b6107ce60048036038101906107c991906131f6565b611c0e565b005b6107d8611d3b565b005b6107e2611db4565b6040516107ef919061323c565b60405180910390f35b610812600480360381019061080d91906131f6565b611dba565b005b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600083600001548460010154856002015492509250925060008161087d611b2d565b0390506108938482670de0b6b3a7640000611e40565b8361089e91906137bb565b95505050505050919050565b6108b2611efd565b80156108c5576108c0611f84565b6108ce565b6108cd611ff6565b5b50565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109a05761099f63f2d81d9560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b600060018111156109b4576109b36137ef565b5b8160018111156109c7576109c66137ef565b5b03610b25576109d68383612072565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154905060008482019050818111610a6057610a5f63db09793b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b808360000181905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505050503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f5d84fd7efe2fd5203970924007f1f56ec874f1fdbe6acec5f208000a72c7045684604051610b18919061323c565b60405180910390a3610cb2565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015610be657610be5638d1473a660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b8381038260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508382600001600082825403925050819055505050610c4c83836121c8565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb1296e59c4148d97ce0bf24c50bb4bd58367005c1871eef38c03187f3cff850484604051610ca9919061323c565b60405180910390a35b505050565b6000610cc16122fc565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610d0f5750825b9050600060018367ffffffffffffffff16148015610d44575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610d52575080155b15610d89576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610dd95760018560000160086101000a81548160ff0219169083151502179055505b610de287612324565b610df0868b62093a80612338565b6003600a60006101000a81548160ff021916908360ff16021790555088600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508315610eea5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610ee1919061386d565b60405180910390a15b50505050505050505050565b60055481565b6000610f15600254600754670de0b6b3a7640000611e40565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f8181548110610f4e57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60075481565b610f91611efd565b600f805490508160ff161015610fd157610fd063fbf1123c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b80600a60006101000a81548160ff021916908360ff1602179055507f8d31d8a650a75f6978e9d7331686f948e5fddeaa4940eddb941d4129459d8bf38160405161101b9190613587565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806110576123cd565b90508060000160009054906101000a900460ff1691505090565b600a60009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6110d8611efd565b6110e260006123f5565b565b6110ec611efd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111505761114f63d92e233d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b80600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f86719c518c7d99ac94b3d405d462ea876ba5cd0a978461dc9a7c9862a948588660405160405180910390a250565b600e6020528060005260406000206000915090508060000154908060010154908060020154905083565b60025481565b6000611215426006546124cc565b905090565b611222611efd565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a5576112a4631b81380360e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b6112d76112b0611360565b828473ffffffffffffffffffffffffffffffffffffffff166124df9092919063ffffffff16565b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288282604051611308929190613888565b60405180910390a15050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60008061136b612539565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61142a611efd565b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600a60009054906101000a900460ff1660ff16600f80549050148061149757506000816000015414155b156114cc576114cb63fbf97e0760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b600f839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600101819055508181600001819055508273ffffffffffffffffffffffffffffffffffffffff167fa975f951c4e6314e31b3e4d9a56f84e05e0bf0d4a1e512caab2f9cc0a249413283604051611587919061323c565b60405180910390a2505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600f80549050905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b80600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ffd489696792cc4c5d5b226c46f008e459c8ec9b746c49191d74bb92c19fd1867338260405161172b9291906138b1565b60405180910390a150565b826000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036117b1576117b063f84835a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000806000836000015484600101548560020154925092509250828710156118465761184563ad57d95d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b6118733330898b73ffffffffffffffffffffffffffffffffffffffff16612561909392919063ffffffff16565b868161187f91906137bb565b84600201819055508281111580156118975750828610155b156118aa578584600101819055506118d6565b8186106118d557600082870390506118c38282856125cb565b88106118d3578685600101819055505b505b5b8773ffffffffffffffffffffffffffffffffffffffff167f8bf110a87db594cedb42356a9ca4b64a0d26fb09909292e842c614823e41d33733898760010154604051611924939291906138da565b60405180910390a25050505050505050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bb576119ba63385296d560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b6119c4816125fa565b6119ce82826126bf565b5050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a02612915565b818073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af957600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af857611af7637c214f0460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b5b611b03833361296c565b915050611b0e612a3d565b919050565b60085481565b611b21611efd565b611b2a81612a56565b50565b600080600554905060008103611b4857600454915050611b77565b6000600854611b55611207565b039050611b658160025484611e40565b600454611b7291906137bb565b925050505b90565b60045481565b6060600f805480602002602001604051908101604052809291908181526020018280548015611c0457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611bba575b5050505050905090565b611c16611efd565b806000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403611c9157611c9063f84835a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160009055600182016000905560028201600090555050611cf482612ad0565b8173ffffffffffffffffffffffffffffffffffffffff167f65ff9187746d336179f23ad14746fa804e31bac422ef2dd63b9dc97313caa79760405160405180910390a25050565b611d43612915565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050611d943382612c8b565b611d9e33826121c8565b611da8333361296c565b5050611db2612a3d565b565b60065481565b611dc2611efd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e345760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611e2b9190613491565b60405180910390fd5b611e3d816123f5565b50565b60008284029050600115611ef65781838583041485151702611ef0576000198385098181108201810383858709846000038516828611611e885763ae47f7026000526004601cfd5b808604955085600302600218808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080818802600203028284880304600184856000030401888611870302170295505050505050611ef6565b81810490505b9392505050565b611f05612d5f565b73ffffffffffffffffffffffffffffffffffffffff16611f23611360565b73ffffffffffffffffffffffffffffffffffffffff1614611f8257611f46612d5f565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f799190613491565b60405180910390fd5b565b611f8c612d67565b6000611f966123cd565b905060018160000160006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fde612d5f565b604051611feb9190613491565b60405180910390a150565b611ffe612da8565b60006120086123cd565b905060008160000160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612050612d5f565b60405161205d9190613491565b60405180910390a150565b8060005260046000fd5b600081036120aa576120a9635ce91fd060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b60006005541480156120be57506000600354115b156120cf576120ce600354612de8565b5b6120d882612e4f565b600060055490506000828201905081811161211d5761211c63e5cfe95760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b8060058190555082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254019250508190555050508173ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d826040516121bc919061323c565b60405180910390a25050565b60008103612200576121ff63a393d14b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b61220982612e4f565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015490508281101561228d5761228c63f1bc94d260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b82810382600001819055508260056000828254039250508190555050508173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516122f0919061323c565b60405180910390a25050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61232c612f0f565b61233581612f4f565b50565b612340612f0f565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600781905550505050565b60007fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b60006123ff612539565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6000828210828418028318905092915050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af1806001600051141661252e57803d853b15171061252d576390b8ec186000526004601cfd5b5b600060345250505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af180600160005114166125ba57803d873b1517106125b957637939f4246000526004601cfd5b5b600060605281604052505050505050565b60008284029050818385830414851517026125ee5763ad251c276000526004601cfd5b81810490509392505050565b600061260581612e4f565b60006006549050804210156126455760004282039050600061263282600254670de0b6b3a7640000611e40565b9050808561264091906137bb565b945050505b826003600082825461265791906137bb565b92505081905550612666612fd5565b60006005541461267c5761267b600354612de8565b5b426008819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d836040516126b2919061323c565b60405180910390a1505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635865c60c846040518263ffffffff1660e01b815260040161271c9190613491565b602060405180830381865afa158015612739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275d9190613926565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612797578290505b6000600f80549050905060005b8181101561290e576000600f82815481106127c2576127c1613953565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600061284b878360010154670de0b6b3a76400006125cb565b905060008260020154905061286082826124cc565b9150818103836002018190555061289887838673ffffffffffffffffffffffffffffffffffffffff166124df9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd53172319994f5af85b7efcb42b2c2c36672baa8560f64b2b0c1d7f0090143328a856040516128f7929190613982565b60405180910390a3505050508060010190506127a4565b5050505050565b600061291f6130d6565b9050600281600001540361295f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816000018190555050565b60008261297881612e4f565b6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154905060008114612a3157600082600101819055506129e085826130fe565b8573ffffffffffffffffffffffffffffffffffffffff167f540798df468d7b23d11f156fdb954cb19ad414d150722a7b6d55ba369dea792e8683604051612a28929190613888565b60405180910390a25b80935050505092915050565b6000612a476130d6565b90506001816000018190555050565b6006544211612a8f57612a8e6349835af060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b806007819055507ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d381604051612ac5919061323c565b60405180910390a150565b6000600f80549050905060008103612b1257612b11631055082b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b60005b81811015612c8557600f8181548110612b3157612b30613953565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c7a57600f6001830381548110612ba557612ba4613953565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f8281548110612be457612be3613953565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f805480612c3e57612c3d6139ab565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050612c88565b806001019050612b15565b50505b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000818303905083811015612d5857612d576308e88f4660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b5050505050565b600033905090565b612d6f61104c565b15612da6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612db061104c565b612de6576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600060075490506000612e0483670de0b6b3a764000084611e40565b9050806002819055508142612e1991906137bb565b600681905550612e328183670de0b6b3a7640000611e40565b60036000828254612e4391906139da565b92505081905550505050565b6000612e59611b2d565b905080600481905550612e6a611207565b600881905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612f0b576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612ef083610814565b82826001016000846002016000849190505583919050555050505b5050565b612f17613173565b612f4d576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612f57612f0f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612fc95760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612fc09190613491565b60405180910390fd5b612fd2816123f5565b50565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016130569291906138b1565b602060405180830381865afa158015613073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130979190613a23565b90508060035411156130d3576130d263f4ba521f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916612068565b5b50565b60007f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00905090565b61316f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612561909392919063ffffffff16565b5050565b600061317d6122fc565b60000160089054906101000a900460ff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c382613198565b9050919050565b6131d3816131b8565b81146131de57600080fd5b50565b6000813590506131f0816131ca565b92915050565b60006020828403121561320c5761320b613193565b5b600061321a848285016131e1565b91505092915050565b6000819050919050565b61323681613223565b82525050565b6000602082019050613251600083018461322d565b92915050565b60008115159050919050565b61326c81613257565b811461327757600080fd5b50565b60008135905061328981613263565b92915050565b6000602082840312156132a5576132a4613193565b5b60006132b38482850161327a565b91505092915050565b6132c581613223565b81146132d057600080fd5b50565b6000813590506132e2816132bc565b92915050565b600281106132f557600080fd5b50565b600081359050613307816132e8565b92915050565b60008060006060848603121561332657613325613193565b5b6000613334868287016131e1565b9350506020613345868287016132d3565b9250506040613356868287016132f8565b9150509250925092565b600080600080600060a0868803121561337c5761337b613193565b5b600061338a888289016131e1565b955050602061339b888289016131e1565b94505060406133ac888289016131e1565b93505060606133bd888289016131e1565b92505060806133ce888289016131e1565b9150509295509295909350565b6000819050919050565b60006134006133fb6133f684613198565b6133db565b613198565b9050919050565b6000613412826133e5565b9050919050565b600061342482613407565b9050919050565b61343481613419565b82525050565b600060208201905061344f600083018461342b565b92915050565b60006020828403121561346b5761346a613193565b5b6000613479848285016132d3565b91505092915050565b61348b816131b8565b82525050565b60006020820190506134a66000830184613482565b92915050565b600060ff82169050919050565b6134c2816134ac565b81146134cd57600080fd5b50565b6000813590506134df816134b9565b92915050565b6000602082840312156134fb576134fa613193565b5b6000613509848285016134d0565b91505092915050565b600061351d82613407565b9050919050565b61352d81613512565b82525050565b60006020820190506135486000830184613524565b92915050565b61355781613257565b82525050565b6000602082019050613572600083018461354e565b92915050565b613581816134ac565b82525050565b600060208201905061359c6000830184613578565b92915050565b60006060820190506135b7600083018661322d565b6135c4602083018561322d565b6135d1604083018461322d565b949350505050565b600080604083850312156135f0576135ef613193565b5b60006135fe858286016131e1565b925050602061360f858286016132d3565b9150509250929050565b600080604083850312156136305761362f613193565b5b600061363e858286016131e1565b925050602061364f858286016131e1565b9150509250929050565b60008060006060848603121561367257613671613193565b5b6000613680868287016131e1565b9350506020613691868287016132d3565b92505060406136a2868287016132d3565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6136e1816131b8565b82525050565b60006136f383836136d8565b60208301905092915050565b6000602082019050919050565b6000613717826136ac565b61372181856136b7565b935061372c836136c8565b8060005b8381101561375d57815161374488826136e7565b975061374f836136ff565b925050600181019050613730565b5085935050505092915050565b60006020820190508181036000830152613784818461370c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137c682613223565b91506137d183613223565b92508282019050808211156137e9576137e861378c565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000819050919050565b600067ffffffffffffffff82169050919050565b600061385761385261384d8461381e565b6133db565b613828565b9050919050565b6138678161383c565b82525050565b6000602082019050613882600083018461385e565b92915050565b600060408201905061389d6000830185613482565b6138aa602083018461322d565b9392505050565b60006040820190506138c66000830185613482565b6138d36020830184613482565b9392505050565b60006060820190506138ef6000830186613482565b6138fc602083018561322d565b613909604083018461322d565b949350505050565b600081519050613920816131ca565b92915050565b60006020828403121561393c5761393b613193565b5b600061394a84828501613911565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082019050613997600083018561322d565b6139a4602083018461322d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006139e582613223565b91506139f083613223565b9250828203905081811115613a0857613a0761378c565b5b92915050565b600081519050613a1d816132bc565b92915050565b600060208284031215613a3957613a38613193565b5b6000613a4784828501613a0e565b9150509291505056fea264697066735822122088bfcbdd01ad016488aaf288bc31cd3b45f60913288a6b95b11866aca35b828c64736f6c63430008180033