9 txs
246 calls
constructor
constructor(uint256 _startBlock, uint256 _cigPerBlock, address _punks, uint256 _CEO_epoch_blocks, uint256 _CEO_auction_blocks, uint256 _CEO_price, address _MASTERCHEF_V2, bytes32 _graffiti, address _NFT, address _V2ROUTER)
functions
accCigPerShare
viewfunction accCigPerShare() view returns (uint256)
admin
viewfunction admin() view returns (address)
allowance
viewfunction allowance(address, address) view returns (uint256)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
CEO_price
viewfunction CEO_price() view returns (uint256)
CEO_punk_index
viewfunction CEO_punk_index() view returns (uint256)
CEO_state
viewfunction CEO_state() view returns (uint256)
CEO_tax_balance
viewfunction CEO_tax_balance() view returns (uint256)
cigPerBlock
viewfunction cigPerBlock() view returns (uint256)
claims
viewfunction claims(uint256) view returns (bool)
decimals
viewfunction decimals() view returns (uint8)
getStats
viewfunction getStats(address _user) view returns (uint256[], address, bytes32, uint112[])
graffiti
viewfunction graffiti() view returns (bytes32)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
lpToken
viewfunction lpToken() view returns (address)
name
viewfunction name() view returns (string)
pendingCig
viewfunction pendingCig(address _user) view returns (uint256)
pendingTokens
viewfunction pendingTokens(uint256 pid, address user, uint256 sushiAmount) view returns (address[], uint256[])
punks
viewfunction punks() view returns (address)
rewardsChangedBlock
viewfunction rewardsChangedBlock() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
taxBurnBlock
viewfunction taxBurnBlock() view returns (uint256)
The_CEO
viewfunction The_CEO() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
userInfo
viewfunction userInfo(address) view returns (uint256 deposit, uint256 rewardDebt)
approve
nonpayablefunction approve(address _spender, uint256 _value) returns (bool)
burnTax
nonpayablefunction burnTax()
buyCEO
nonpayablefunction buyCEO(uint256 _max_spend, uint256 _new_price, uint256 _tax_amount, uint256 _punk_index, bytes32 _graffiti)
claim
nonpayablefunction claim(uint256 _punkIndex) returns (bool)
deposit
nonpayablefunction deposit(uint256 _amount)
depositTax
nonpayablefunction depositTax(uint256 _amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw()
onSushiReward
nonpayablefunction onSushiReward(uint256, address _user, address _to, uint256, uint256 _newLpAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
rewardDown
nonpayablefunction rewardDown() returns (uint256)
rewardUp
nonpayablefunction rewardUp() returns (uint256)
setPool
nonpayablefunction setPool(address _addr)
setPrice
nonpayablefunction setPrice(uint256 _price)
setReward
nonpayablefunction setReward(uint256 _value)
setStartingBlock
nonpayablefunction setStartingBlock(uint256 _startBlock)
transfer
nonpayablefunction transfer(address _to, uint256 _value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _value) returns (bool)
update
nonpayablefunction update()
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CEODefaulted
event CEODefaulted(address indexed called_by, uint256 reward)
CEOPriceChange
event CEOPriceChange(uint256 price)
Claim
event Claim(address indexed owner, uint256 indexed punkIndex, uint256 value)
Deposit
event Deposit(address indexed user, uint256 amount)
EmergencyWithdraw
event EmergencyWithdraw(address indexed user, uint256 amount)
NewCEO
event NewCEO(address indexed user, uint256 indexed punk_id, uint256 new_price, bytes32 graffiti)
RevenueBurned
event RevenueBurned(address indexed user, uint256 amount)
RewardDown
event RewardDown(uint256 reward, uint256 downAmount)
RewardUp
event RewardUp(uint256 reward, uint256 upAmount)
TaxBurned
event TaxBurned(address indexed user, uint256 amount)
TaxDeposit
event TaxDeposit(address indexed user, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed user, uint256 amount)
errors
No errors.
creation bytecode
0x61012060405260008055690a968163f0a57b400000600e553480156200002457600080fd5b5060405162003dcb38038062003dcb8339810160408190526200004791620001e3565b60068a90556008899055600480546001600160a01b03199081163317909155600a80546001600160a01b038b811691909316179055608088905260a0879052600e86905584811661010052600984905582811660e052811660c052620000c588620000bf69152d02c7e14af680000061271062000292565b620000d5565b50505050505050505050620002cf565b6001600160a01b038216620001305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600054620001409190620002b4565b60009081556001600160a01b03831681526001602052604090205462000168908290620002b4565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001ba9085815260200190565b60405180910390a35050565b80516001600160a01b0381168114620001de57600080fd5b919050565b6000806000806000806000806000806101408b8d0312156200020457600080fd5b8a51995060208b015198506200021d60408c01620001c6565b975060608b0151965060808b0151955060a08b015194506200024260c08c01620001c6565b935060e08b015192506200025a6101008c01620001c6565b91506200026b6101208c01620001c6565b90509295989b9194979a5092959850565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002af57620002af6200027c565b500290565b60008219821115620002ca57620002ca6200027c565b500190565b60805160a05160c05160e05161010051613a9b62000330600039600061185f0152600061338a0152600081816124f6015261271d0152600061310d0152600081816115e70152818161207d01528181612cdc0152612e800152613a9b6000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c806370a0823111610191578063b6b55f25116100e3578063dd62ed3e11610097578063f1dda25211610071578063f1dda252146106c0578063f56a499f146106c8578063f851a440146106d157600080fd5b8063dd62ed3e14610662578063dfe0a8891461068d578063ec17b20e146106ad57600080fd5b8063d63b3c49116100c8578063d63b3c4914610630578063d98d052a14610651578063db2e21bc1461065a57600080fd5b8063b6b55f25146105fa578063c23f85d61461060d57600080fd5b8063941a9acd11610145578063a888c2cd1161011f578063a888c2cd146105bb578063a9059cbb146105de578063a9f8d181146105f157600080fd5b8063941a9acd1461056457806395d89b4114610577578063a2e62045146105b357600080fd5b806371fab9001161017657806371fab900146105355780638bf637421461053e57806391b7f5ed1461055157600080fd5b806370a082311461050d578063715018a61461052d57600080fd5b80632e1a7d4d1161024a5780633f6c518d116101fe5780634437152a116101d85780634437152a146104d2578063557aa67e146104e55780635fcbd285146104ed57600080fd5b80633f6c518d146104a35780633fd2c585146104b6578063430c3880146104bf57600080fd5b8063379607f51161022f578063379607f51461047e5780633a5fca36146104915780633e321c671461049a57600080fd5b80632e1a7d4d14610451578063313ce5671461046457600080fd5b806319ad317d116102ac57806323b872dd1161028657806323b872dd146104225780632851809414610435578063293be4561461043e57600080fd5b806319ad317d146103ca5780631d4eaead1461040f5780631fdcc12e1461041957600080fd5b80630d778273116102dd5780630d7782731461036e57806318160ddd146103855780631959a0021461038e57600080fd5b806306fdde03146102f9578063095ea7b31461034b575b600080fd5b6103356040518060400160405280600f81526020017f43696761726574746520546f6b656e000000000000000000000000000000000081525081565b6040516103429190613506565b60405180910390f35b61035e61035936600461359b565b6106f1565b6040519015158152602001610342565b61037760075481565b604051908152602001610342565b61037760005481565b6103b561039c3660046135c7565b6003602052600090815260409020805460019091015482565b60408051928352602083019190915201610342565b600c546103ea9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610342565b61041761076a565b005b61037760105481565b61035e6104303660046135eb565b610790565b610377600d5481565b61041761044c36600461362c565b610910565b61041761045f36600461362c565b610996565b61046c601281565b60405160ff9091168152602001610342565b61035e61048c36600461362c565b610b61565b610377600e5481565b61037760125481565b6104176104b136600461362c565b610ee7565b61037760115481565b6104176104cd366004613645565b611045565b6104176104e03660046135c7565b6113aa565b6103776114f2565b6005546103ea9073ffffffffffffffffffffffffffffffffffffffff1681565b61037761051b3660046135c7565b60016020526000908152604090205481565b61041761179c565b61037760085481565b61041761054c366004613680565b611847565b61041761055f36600461362c565b611989565b6103776105723660046135c7565b611bb8565b6103356040518060400160405280600381526020017f434947000000000000000000000000000000000000000000000000000000000081525081565b610417611cf9565b61035e6105c936600461362c565b600b6020526000908152604090205460ff1681565b61035e6105ec36600461359b565b611e00565b61037760065481565b61041761060836600461362c565b611eb3565b61062061061b3660046135c7565b612027565b604051610342949392919061370d565b61064361063e366004613799565b6129b4565b6040516103429291906137c0565b610377600f5481565b610417612a6c565b61037761067036600461382d565b600260209081526000928352604080842090915290825290205481565b600a546103ea9073ffffffffffffffffffffffffffffffffffffffff1681565b6104176106bb36600461362c565b612b61565b610377612be7565b61037760095481565b6004546103ea9073ffffffffffffffffffffffffffffffffffffffff1681565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107599086815260200190565b60405180910390a350600192915050565b43601154141561077657565b600f546001141561078e57610789612e7c565b436011555b565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915281205482111561082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f7420617070726f766564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040902054610860908390613895565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260016020526040808220939093559085168152205461089d9083906138ac565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108fe9086815260200190565b60405180910390a35060019392505050565b60045473ffffffffffffffffffffffffffffffffffffffff163314610991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f6e6c792061646d696e2063616e2063616c6c207468697300000000000000006044820152606401610826565b600855565b3360009081526003602052604090208054821115610a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f77697468647261773a206e6f7420676f6f6400000000000000000000000000006044820152606401610826565b610a18611cf9565b6000816001015464e8d4a510006007548460000154610a3791906138c4565b610a419190613930565b610a4b9190613895565b9050610a57338261302c565b8154610a64908490613895565b80835560075464e8d4a5100091610a7b91906138c4565b610a859190613930565b60018301556005546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af1158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b25919061396b565b5060405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a2505050565b600061270f821115610bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f696e76616c69642070756e6b00000000000000000000000000000000000000006044820152606401610826565b6000828152600b602052604090205460ff1615610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f70756e6b20616c726561647920636c61696d65640000000000000000000000006044820152606401610826565b600a546040517f581781680000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff909116906358178168906024016020604051808303816000875af1158015610cb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdd919061398d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f70756e6b203430340000000000000000000000000000000000000000000000006044820152606401610826565b6000828152600b6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600a5473ffffffffffffffffffffffffffffffffffffffff168452909152902054610de49069152d02c7e14af680000090613895565b600a5473ffffffffffffffffffffffffffffffffffffffff16600090815260016020526040808220929092553381522054610e2a9069152d02c7e14af6800000906138ac565b336000818152600160205260409081902092909255600a549151909173ffffffffffffffffffffffffffffffffffffffff16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e969069152d02c7e14af6800000815260200190565b60405180910390a360405169152d02c7e14af68000008152829033907f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79060200160405180910390a3506001919050565b600c5473ffffffffffffffffffffffffffffffffffffffff163314610f68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792043454f2063616e2063616c6c2074686973000000000000000000006044820152606401610826565b600f54600114610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f6e6f2043454f00000000000000000000000000000000000000000000000000006044820152606401610826565b801561102c57610fe43082611e00565b5080601054610ff391906138ac565b60105560405181815233907f2ab3b3b53aa29a0599c58f343221e29a032103d015c988fae9a5cdfa5c005d9d9060200160405180910390a25b43601154146110425761103d612e7c565b436011555b50565b600f54600114801561105957504360115414155b1561106657611066612e7c565b600f546002141561107d57611079613108565b600e555b8483600e5461108c91906138ac565b11156110f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6f766572706169640000000000000000000000000000000000000000000000006044820152606401610826565b64e8d4a51000841015611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7072696365203220736d6f6c00000000000000000000000000000000000000006044820152606401610826565b61270f8211156111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f696e76616c69642070756e6b00000000000000000000000000000000000000006044820152606401610826565b6111db6103e885613930565b831015611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e73756666696369656e7420746178000000000000000000000000000000006044820152606401610826565b61125030600e54611e00565b5061125d30600e5461318c565b600e5460405190815233907f1b1be00a9ca19f9c14f1ca5d16e4aba7d4dd173c2263d4d8a03484e1c652c8989060200160405180910390a2600c546010546112bb9173ffffffffffffffffffffffffffffffffffffffff1690613247565b6112c53084611e00565b506010839055600c546112ee9073ffffffffffffffffffffffffffffffffffffffff1633613303565b600e849055600d829055600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001633908117909155436011556001600f5560098290556040518481527f2ab3b3b53aa29a0599c58f343221e29a032103d015c988fae9a5cdfa5c005d9d9060200160405180910390a26040805185815260208101839052839133917f09b306c6ea47db16bdf4cc36f3ea2479af494cd04b4361b6485d70f088658b7e910160405180910390a35050505050565b60045473ffffffffffffffffffffffffffffffffffffffff16331461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f6e6c792061646d696e2063616e2063616c6c207468697300000000000000006044820152606401610826565b60055473ffffffffffffffffffffffffffffffffffffffff16156114ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f706f6f6c20616c726561647920736574000000000000000000000000000000006044820152606401610826565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5460009073ffffffffffffffffffffffffffffffffffffffff163314611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792043454f2063616e2063616c6c2074686973000000000000000000006044820152606401610826565b600f546001146115e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f2043454f20696e20636861726765000000000000000000000000000000006044820152606401610826565b61160d7f000000000000000000000000000000000000000000000000000000000000000060026138c4565b60125461161a91906138ac565b4311611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f77616974206d6f726520626c6f636b73000000000000000000000000000000006044820152606401610826565b683635c9adc5dea0000060085411156116f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f72657761726420616c7265616479206d617800000000000000000000000000006044820152606401610826565b4360125560085460009061170d90600590613930565b905060008160085461171f91906138ac565b9050683635c9adc5dea000008111156117575760085461174890683635c9adc5dea00000613895565b9150683635c9adc5dea0000090505b600881905560408051828152602081018490527fac0f42229355025440e6f2b848e89f3a5cc8e1165cc312de10be10b12b922d3391015b60405180910390a150905090565b60045473ffffffffffffffffffffffffffffffffffffffff16331461181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f6e6c792061646d696e2063616e2063616c6c207468697300000000000000006044820152606401610826565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146118e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f6e6c79204d43563200000000000000000000000000000000000000000000006044820152606401610826565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600360205260409020611913611cf9565b80541561195b576000816001015464e8d4a51000600754846000015461193991906138c4565b6119439190613930565b61194d9190613895565b9050611959858261302c565b505b81815560075464e8d4a510009061197290846138c4565b61197c9190613930565b6001909101555050505050565b600c5473ffffffffffffffffffffffffffffffffffffffff163314611a0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792043454f2063616e2063616c6c2074686973000000000000000000006044820152606401610826565b600f54600114611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f2043454f20696e20636861726765000000000000000000000000000000006044820152606401610826565b64e8d4a51000811015611ae5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7072696365203220736d6f6c00000000000000000000000000000000000000006044820152606401610826565b611af16103e882613930565b6010541015611b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f707269636520776f756c642064656661756c74000000000000000000000000006044820152606401610826565b6011544314611b7257611b6d612e7c565b436011555b600f546001141561104257600e8190556040518181527f10c342a321267613a25f77d4273d7f2688bef174a7214bc3dde44b31c5064ff69060200160405180910390a150565b60075473ffffffffffffffffffffffffffffffffffffffff82811660009081526003602052604080822060055491517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015292949390928592909116906370a0823190602401602060405180830381865afa158015611c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6591906139aa565b905060065443118015611c7757508015155b15611cc357600060085460065443611c8f9190613895565b611c9991906138c4565b905081611cab8264e8d4a510006138c4565b611cb59190613930565b611cbf90856138ac565b9350505b6001820154825464e8d4a5100090611cdc9086906138c4565b611ce69190613930565b611cf09190613895565b95945050505050565b6006544311611d0457565b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015611d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9791906139aa565b905080611da5575043600655565b600060085460065443611db89190613895565b611dc291906138c4565b9050611dce30826133ea565b81611dde8264e8d4a510006138c4565b611de89190613930565b600754611df591906138ac565b600755505043600655565b33600090815260016020526040812054611e1b908390613895565b336000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff851681522054611e559083906138ac565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107599086815260200190565b336000908152600360205260409020611eca611cf9565b805415611f12576000816001015464e8d4a510006007548460000154611ef091906138c4565b611efa9190613930565b611f049190613895565b9050611f10338261302c565b505b8115611fff576005546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015611f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb9919061396b565b508054611fc79083906138ac565b815560405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a25b600754815464e8d4a5100091612014916138c4565b61201e9190613930565b60019091015550565b6040805160168082526102e08201909252606091600091829184918391602082016102c08036833750506040805160028082526060820183529394506000939092509060208301908036833701905050905060007f00000000000000000000000000000000000000000000000000000000000000006103e8600e546120ac9190613930565b6120b69190613930565b9050600081601154436120c99190613895565b6120d391906138c4565b600e5473ffffffffffffffffffffffffffffffffffffffff8b166000908152600360209081526040918290208251808401909352805483526001015490820152600f5492935090916002141561212e5761212b613108565b91505b600f5486600081518110612144576121446139c3565b60200260200101818152505060105486600181518110612166576121666139c3565b60200260200101818152505060115486600281518110612188576121886139c3565b602002602001018181525050601254866003815181106121aa576121aa6139c3565b60200260200101818152505081866004815181106121ca576121ca6139c3565b602002602001018181525050600d54866005815181106121ec576121ec6139c3565b6020026020010181815250506008548660068151811061220e5761220e6139c3565b60200260200101818152505060005486600781518110612230576122306139c3565b602090810291909101015260055473ffffffffffffffffffffffffffffffffffffffff16156127c0576005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156122c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122eb91906139aa565b866008815181106122fe576122fe6139c3565b60209081029190910101526005546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8d81166004830152909116906370a0823190602401602060405180830381865afa158015612379573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239d91906139aa565b866010815181106123b0576123b06139c3565b6020026020010181815250506123c58b611bb8565b866011815181106123d8576123d86139c3565b602002602001018181525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612451573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124759190613a15565b5086600081518110612489576124896139c3565b60200260200101876001815181106124a3576124a36139c3565b60200260200101826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815250826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1681525050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663054d50d4670de0b6b3a76400008760008151811061254c5761254c6139c3565b60200260200101516dffffffffffffffffffffffffffff1688600181518110612577576125776139c3565b60200260200101516dffffffffffffffffffffffffffff166040518463ffffffff1660e01b81526004016125be939291909283526020830191909152604082015260600190565b602060405180830381865afa1580156125db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ff91906139aa565b86601281518110612612576126126139c3565b602090810291909101015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc23b156127c057600073c3d03e4f041fd4cd388c549ee2a29a9e5075882f90506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561269f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c39190613a15565b506040517f054d50d4000000000000000000000000000000000000000000000000000000008152670de0b6b3a764000060048201526dffffffffffffffffffffffffffff80841660248301528216604482015291935091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063054d50d490606401602060405180830381865afa158015612779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279d91906139aa565b896013815181106127b0576127b06139c3565b6020026020010181815250505050505b43866009815181106127d4576127d46139c3565b6020026020010181815250508386600a815181106127f4576127f46139c3565b6020026020010181815250508286600b81518110612814576128146139c3565b60200260200101818152505060065486600c81518110612836576128366139c3565b602002602001018181525050806000015186600d8151811061285a5761285a6139c3565b602002602001018181525050806020015186600e8151811061287e5761287e6139c3565b602002602001018181525050600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205486600f815181106128dd576128dd6139c3565b60209081029190910181019190915260008052600190527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495486518790601490811061292b5761292b6139c3565b602090810291909101810191909152600a5473ffffffffffffffffffffffffffffffffffffffff16600090815260019091526040902054865187906015908110612977576129776139c3565b60209081029190910101525050600c5460095494985073ffffffffffffffffffffffffffffffffffffffff16965092945090925050509193509193565b60408051600180825281830190925260609182916000916020808301908036833701905050905030816000815181106129ef576129ef6139c3565b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050612a4286611bb8565b81600081518110612a5557612a556139c3565b602090810291909101015290969095509350505050565b336000818152600360205260408082208054838255600182019390935560055491517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810194909452602484018390529273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af1158015612b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b26919061396b565b5060405181815233907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695906020015b60405180910390a25050565b60045473ffffffffffffffffffffffffffffffffffffffff163314612be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f6e6c792061646d696e2063616e2063616c6c207468697300000000000000006044820152606401610826565b600655565b600c5460009073ffffffffffffffffffffffffffffffffffffffff163314612c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c792043454f2063616e2063616c6c2074686973000000000000000000006044820152606401610826565b600f54600114612cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f2043454f20696e20636861726765000000000000000000000000000000006044820152606401610826565b612d027f000000000000000000000000000000000000000000000000000000000000000060026138c4565b601254612d0f91906138ac565b4311612d77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f77616974206d6f726520626c6f636b73000000000000000000000000000000006044820152606401610826565b655af3107a40006008541015612de9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f72657761726420616c7265616479206c6f7700000000000000000000000000006044820152606401610826565b43601255600854600090612dff90600590613930565b9050600081600854612e119190613895565b9050655af3107a4000811015612e4157655af3107a4000600854612e359190613895565b9150655af3107a400090505b600881905560408051828152602081018490527f954f28b512349f4a396730bb92a76639ffc1960d9e784f411a95f270a06eaf3a910161178e565b60007f00000000000000000000000000000000000000000000000000000000000000006103e8600e54612eaf9190613930565b612eb99190613930565b905060008160115443612ecc9190613895565b612ed691906138c4565b9050601054600014158015612eed57508060105410155b15612f3f5780601054612f009190613895565b601055612f0d308261318c565b60405181815233907f9ad3c710e1cc4e96240264e5d3cd5aeaa93fd8bd6ee4b11bc9be7a5036a8058590602001612b55565b600060105482612f4f9190613895565b9050612f5d3060105461318c565b60105460405190815233907f9ad3c710e1cc4e96240264e5d3cd5aeaa93fd8bd6ee4b11bc9be7a5036a805859060200160405180910390a26002600f556000601055600c54612fc29073ffffffffffffffffffffffffffffffffffffffff1630613303565b600c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001630179055612ff633826133ea565b60405181815233907fb69f2aeff650d440d3e7385aedf764195cfca9509e33b69e69f8c77cab1e1af190602001610b54565b5050565b3060009081526001602052604090205480821115613048578091505b30600090815260016020526040902054613063908390613895565b306000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff85168152205461309d9083906138ac565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160205260409081902092909255905130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906130fb9086815260200190565b60405180910390a3505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006011544303600a600e548161314357613143613901565b04028161315257613152613901565b049050600e5481111561316b5764e8d4a5100091505090565b600e5481900364e8d4a51000811015613186575064e8d4a510005b92915050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546131bd908290613895565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546131f2908290613895565b600090815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b80613250575050565b3060009081526001602052604090205461326b908290613895565b306000908152600160205260408082209290925573ffffffffffffffffffffffffffffffffffffffff8416815220546132a59082906138ac565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260409081902092909255905130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061323b9085815260200190565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613028576040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528281166024830152600060448301527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90606401600060405180830381600087803b1580156133ce57600080fd5b505af11580156133e2573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216613467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610826565b8060005461347591906138ac565b600090815573ffffffffffffffffffffffffffffffffffffffff83168152600160205260409020546134a89082906138ac565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061323b9085815260200190565b600060208083528351808285015260005b8181101561353357858101830151858201604001528201613517565b81811115613545576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461104257600080fd5b600080604083850312156135ae57600080fd5b82356135b981613579565b946020939093013593505050565b6000602082840312156135d957600080fd5b81356135e481613579565b9392505050565b60008060006060848603121561360057600080fd5b833561360b81613579565b9250602084013561361b81613579565b929592945050506040919091013590565b60006020828403121561363e57600080fd5b5035919050565b600080600080600060a0868803121561365d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080600080600060a0868803121561369857600080fd5b8535945060208601356136aa81613579565b935060408601356136ba81613579565b94979396509394606081013594506080013592915050565b600081518084526020808501945080840160005b83811015613702578151875295820195908201906001016136e6565b509495945050505050565b60808152600061372060808301876136d2565b602073ffffffffffffffffffffffffffffffffffffffff87168185015285604085015283820360608501528185518084528284019150828701935060005b8181101561378a5784516dffffffffffffffffffffffffffff168352938301939183019160010161375e565b50909998505050505050505050565b6000806000606084860312156137ae57600080fd5b83359250602084013561361b81613579565b604080825283519082018190526000906020906060840190828701845b8281101561380f57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016137dd565b5050508381038285015261382381866136d2565b9695505050505050565b6000806040838503121561384057600080fd5b823561384b81613579565b9150602083013561385b81613579565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156138a7576138a7613866565b500390565b600082198211156138bf576138bf613866565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138fc576138fc613866565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613966577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561397d57600080fd5b815180151581146135e457600080fd5b60006020828403121561399f57600080fd5b81516135e481613579565b6000602082840312156139bc57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516dffffffffffffffffffffffffffff81168114613a1057600080fd5b919050565b600080600060608486031215613a2a57600080fd5b613a33846139f2565b9250613a41602085016139f2565b9150604084015163ffffffff81168114613a5a57600080fd5b80915050925092509256fea2646970667358221220d4c6a9aefdfe889ae4ba6529f5e0b60f529b3e11c35a23c3e4efce1642c63db964736f6c634300080b00330000000000000000000000000000000000000000000000000000000000d3abc500000000000000000000000000000000000000000000003635c9adc5dea00000000000000000000000000000b47e3cd837ddf8e4c57f05d70ab865de6e193bbb0000000000000000000000000000000000000000000000000000000000001c200000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000a968163f0a57b400000000000000000000000000000ef0881ec094552b2e128cf945ef17a6752b4ec5d31320000000000000000000000000000000000000000000000000000000000000000000000000000000000004aa51e8479ecb44c644c96e38c20b18fbc02da91000000000000000000000000d9e1ce17f2641f24ae83637ab66a2cca9c378b9f