0 txs
2 calls
constructor
constructor()
functions
authorityAddress
viewfunction authorityAddress() view returns (address)
baseToken
viewfunction baseToken() view returns (address)
buyBackAndBurn
viewfunction buyBackAndBurn() view returns (bool)
DISPUTE_NUMBER_OF_ORACLES
viewfunction DISPUTE_NUMBER_OF_ORACLES() view returns (uint256)
disputeEndTime
viewfunction disputeEndTime() view returns (uint256)
disputeStartTime
viewfunction disputeStartTime() view returns (uint256)
feeWethORC
viewfunction feeWethORC() view returns (uint24)
owner
viewfunction owner() view returns (address)
platformWallet
viewfunction platformWallet() view returns (address)
PRICE_PER_SIDE
viewfunction PRICE_PER_SIDE() view returns (uint256)
proofSubmmissionTime
viewfunction proofSubmmissionTime() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
timeFeeWallet
viewfunction timeFeeWallet() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
createDispute
nonpayablefunction createDispute(uint256 dealSize, bool isLoyalty, uint256 eachUserDisputeCost, uint256 disputeParties, string disputeUri) returns (address)
initialize
nonpayablefunction initialize(address platform, address timeFeeAddress, address base, address authority, address platformOwner)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuthorityAddress
nonpayablefunction setAuthorityAddress(address newAuthorityAddress)
setDisputeTimes
nonpayablefunction setDisputeTimes(uint256 startTime, uint256 proofTime, uint256 endTime, bool isDays)
setPlatformWallet
nonpayablefunction setPlatformWallet(address newPlatformWallet)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateBuyBackAndBurn
nonpayablefunction updateBuyBackAndBurn(uint24 fee)
updateDisputePricePerSide
nonpayablefunction updateDisputePricePerSide(uint256 newPricePerSide)
updateExistingAuthorityAddress
nonpayablefunction updateExistingAuthorityAddress(address disputeContract, address newAuthorityAddress)
updateExistingPlatformWallet
nonpayablefunction updateExistingPlatformWallet(address disputeContract, address newPlatformWallet)
updateNoOfOracles
nonpayablefunction updateNoOfOracles(uint256 newNoOfOracles)
updateTimeFeeWalletAddress
nonpayablefunction updateTimeFeeWalletAddress(address newTimeFeeWallet)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AuthorityAddressUpdated
event AuthorityAddressUpdated(address indexed previousAuthorityAddress, address indexed newAuthorityAddress)
DisputeCreated
event DisputeCreated(address contractAddress, address creator, address baseToken, address authority, uint256 userDisputeId)
DisputePriceUpdated
event DisputePriceUpdated(uint256 previousPrice, uint256 newPrice)
DisputeTimeUpdated
event DisputeTimeUpdated(uint256 startTime, uint256 endTime, uint256 proofTime, address indexed disputeContract)
ExistingAuthorityAddressUpdated
event ExistingAuthorityAddressUpdated(address indexed disputeContract, address indexed authorityAddress)
ExistingPlatformWalletUpdated
event ExistingPlatformWalletUpdated(address indexed disputeContract, address indexed platfromWallet)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlatformWalletIsUpdated
event PlatformWalletIsUpdated(address indexed previousPlatformWallet, address indexed newPlatformWallet)
TimeFeeWalletAddressUpdated
event TimeFeeWalletAddressUpdated(address indexed previousTimeFeeWallet, address indexed newTimeFeeWallet)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidFee
error InvalidFee()
InvalidInitialization
error InvalidInitialization()
InvalidValue
error InvalidValue()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615ff26100f95f395f81816112550152818161127e01526113b90152615ff25ff3fe608060405260043610610173575f3560e01c80638831e9cf116100c9578063bf0780db11610078578063bf0780db146103e2578063c55dae6314610401578063c970e99f14610420578063e9eef88e14610450578063ea36212d14610486578063f2fde38b146104a5578063fa2af9da146104c4575f5ffd5b80638831e9cf146103015780638da5cb5b14610320578063923fc0b914610334578063958c9b9c146103485780639b8f539c14610367578063a3cf25ab14610386578063ad3cb1cc146103a5575f5ffd5b806352d1902d1161012557806352d1902d14610252578063579812a5146102665780635e159c531461028557806370b97de7146102a4578063715018a6146102b95780637a079d24146102cd57806384bc0bf2146102e2575f5ffd5b80630ee19552146101775780631459457a14610198578063225edd10146101b757806322edce20146101df5780633c695d4e146101fe5780634ab312181461022a5780634f1ef2861461023f575b5f5ffd5b348015610182575f5ffd5b50610196610191366004611758565b6104e3565b005b3480156101a3575f5ffd5b506101966101b2366004611783565b610558565b3480156101c2575f5ffd5b506101cc60025481565b6040519081526020015b60405180910390f35b3480156101ea575f5ffd5b506101966101f93660046117f0565b61073f565b348015610209575f5ffd5b5060075461021d906001600160a01b031681565b6040516101d69190611812565b348015610235575f5ffd5b506101cc60035481565b61019661024d36600461183a565b6107c3565b34801561025d575f5ffd5b506101cc6107e2565b348015610271575f5ffd5b506101966102803660046118fd565b6107fd565b348015610290575f5ffd5b5061019661029f366004611918565b6108a1565b3480156102af575f5ffd5b506101cc60015481565b3480156102c4575f5ffd5b506101966109b0565b3480156102d8575f5ffd5b506101cc60085481565b3480156102ed575f5ffd5b506101966102fc366004611963565b6109c3565b34801561030c575f5ffd5b5061019661031b3660046118fd565b610acc565b34801561032b575f5ffd5b5061021d610b72565b34801561033f575f5ffd5b506101cc5f5481565b348015610353575f5ffd5b5061021d61036236600461199f565b610ba0565b348015610372575f5ffd5b50610196610381366004611758565b610fa8565b348015610391575f5ffd5b5060065461021d906001600160a01b031681565b3480156103b0575f5ffd5b506103d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101d69190611a65565b3480156103ed575f5ffd5b506101966103fc3660046118fd565b610fdf565b34801561040c575f5ffd5b5060045461021d906001600160a01b031681565b34801561042b575f5ffd5b5060075461044090600160a01b900460ff1681565b60405190151581526020016101d6565b34801561045b575f5ffd5b5060055461047290600160a01b900462ffffff1681565b60405162ffffff90911681526020016101d6565b348015610491575f5ffd5b506101966104a0366004611918565b611083565b3480156104b0575f5ffd5b506101966104bf3660046118fd565b611192565b3480156104cf575f5ffd5b5060055461021d906001600160a01b031681565b6104eb6111d5565b8015806104f9575060015481145b15610517576040516358d620b360e01b815260040160405180910390fd5b60015460408051918252602082018390527f3e53885ee1ad89dfe02b91541df858cc255c034245d0f086c74ad6ea6ec3d9cb910160405180910390a1600155565b5f610561611207565b805490915060ff600160401b82041615906001600160401b03165f811580156105875750825b90505f826001600160401b031660011480156105a25750303b155b9050811580156105b0575080155b156105ce5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105f857845460ff60401b1916600160401b1785555b61060186611231565b610609611242565b6001600160a01b038a16158061062657506001600160a01b038916155b8061063857506001600160a01b038816155b8061064a57506001600160a01b038716155b8061065c57506001600160a01b038616155b1561067a5760405163e6c4247b60e01b815260040160405180910390fd5b60058054600680546001600160a01b038d81166001600160a01b031992831617909255600480548d8416921691909117905560078054600f5f55623d090060015561012c600281905560038190556008556001600160a81b0319168b83161790556001600160b81b0319909116908c16179055831561073357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6107476111d5565b600754600160a01b900460ff1615610769576007805460ff60a01b1916905550565b8062ffffff165f0361078e576040516358d620b360e01b815260040160405180910390fd5b6005805462ffffff60a01b1916600160a01b62ffffff84168102919091179091556007805460ff60a01b191690911790555b50565b6107cb61124a565b6107d4826112ee565b6107de82826112f6565b5050565b5f6107eb6113ae565b505f516020615f9d5f395f51905f5290565b6108056111d5565b6001600160a01b038116158061082857506006546001600160a01b038281169116145b156108465760405163e6c4247b60e01b815260040160405180910390fd5b6006546040516001600160a01b038084169216907f62f89c5f9ac38231a06486e252729814bf16bf7e1e766076dad77dcde9f41d7c905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6108a96111d5565b6001600160a01b03821615806108c657506001600160a01b038116155b156108e45760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600b602052604090205460ff1661091c5760405163e6c4247b60e01b815260040160405180910390fd5b60405163ccfc456960e01b81526001600160a01b0383169063ccfc456990610948908490600401611812565b5f604051808303815f87803b15801561095f575f5ffd5b505af1158015610971573d5f5f3e3d5ffd5b50506040516001600160a01b038085169350851691507f1f2a1174c083e293cecbc3d063657f97b3d3fd1d84d1b6484d6cba850b6e671e905f90a35050565b6109b86111d5565b6109c15f6113f7565b565b6109cb6111d5565b8315806109d6575081155b806109df575082155b156109fd57604051632a9ffab760e21b815260040160405180910390fd5b8015610a5857818403610a2357604051632a9ffab760e21b815260040160405180910390fd5b610a308462015180611a8b565b600255610a408262015180611a8b565b600355610a508362015180611a8b565b600855610a83565b610a6384603c611a8b565b600255610a7183603c611a8b565b600855610a7f82603c611a8b565b6003555b604080518581526020810184905290810184905230907f2e911306b9e1a30bfa03b442ba14061525801114e6a628b0de1b1c07b6116e889060600160405180910390a250505050565b610ad46111d5565b6005546001600160a01b03161580610af957506005546001600160a01b038281169116145b15610b175760405163e6c4247b60e01b815260040160405180910390fd5b6005546040516001600160a01b038084169216907fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e7078905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f5f3390505f604051806101e001604052808a81526020015f5481526020015f81526020015f81526020015f8152602001891515815260200160025442610be79190611aa2565b815260200160035460085460025442610c009190611aa2565b610c0a9190611aa2565b610c149190611aa2565b81526020018781526020015f815260200160018152602001878152602001836001600160a01b0316815260200186868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250938552505050602090910152905060018611610ca157604051632a9ffab760e21b815260040160405180910390fd5b8715610d3c575f610cb2878b611ab5565b9050805f03610cd4576040516358d620b360e01b815260040160405180910390fd5b5f610ce18b6109c4611467565b90505f610cee8983611ab5565b9050805f03610d10576040516358d620b360e01b815260040160405180910390fd5b60808401829052600154610d248285611aa2565b610d2e9190611aa2565b604085015250610d45915050565b60015460408201525b6005546006546004546007546001545f805460085460035460405193986001600160a01b038082169981169881169790811696953094600160a01b9283900460ff16949290930462ffffff16929190610d9d9061174b565b6001600160a01b039b8c168152998b1660208b0152978a1660408a01529589166060890152608088019490945260a087019290925290951660c085015293151560e084015262ffffff90931661010083015261012082019290925261014081019190915261016001604051809103905ff080158015610e1e573d5f5f3e3d5ffd5b5090508160400151881015610e46576040516358d620b360e01b815260040160405180910390fd5b6040820151600454610e67916001600160a01b039091169085908490611487565b604051600162ba926b60e01b031981526001600160a01b0382169063ff456d9590610e96908590600401611ad4565b5f604051808303815f87803b158015610ead575f5ffd5b505af1158015610ebf573d5f5f3e3d5ffd5b505050506001600160a01b038381165f818152600a60208181526040808420805460098452828620818752845291852080546001600160a01b03191697891697909717909655938352528254919290610f1783611bb3565b90915550506001600160a01b038281165f818152600b6020908152604091829020805460ff1916600117905560045460075483519485528986169285019290925284168383015290921660608201526080810183905290517f5a2ebdf3629a992ad1a4138811be00975016f1139be6ce0512f627827d77b2dc9160a0908290030190a1509998505050505050505050565b610fb06111d5565b801580610fbd57505f5481145b15610fdb57604051632a9ffab760e21b815260040160405180910390fd5b5f55565b610fe76111d5565b6001600160a01b038116158061100a57506007546001600160a01b038281169116145b156110285760405163e6c4247b60e01b815260040160405180910390fd5b6007546040516001600160a01b038084169216907f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b61108b6111d5565b6001600160a01b03821615806110a857506001600160a01b038116155b156110c65760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600b602052604090205460ff166110fe5760405163e6c4247b60e01b815260040160405180910390fd5b604051630ada4ef360e41b81526001600160a01b0383169063ada4ef309061112a908490600401611812565b5f604051808303815f87803b158015611141575f5ffd5b505af1158015611153573d5f5f3e3d5ffd5b50506040516001600160a01b038085169350851691507fae03c08a3f7078bbdc6986e7f8f7fda4a75c215f0adda92c192919c27e9f92e2905f90a35050565b61119a6111d5565b6001600160a01b0381166111cc575f604051631e4fbdf760e01b81526004016111c39190611812565b60405180910390fd5b6107c0816113f7565b336111de610b72565b6001600160a01b0316146109c1573360405163118cdaa760e01b81526004016111c39190611812565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005b92915050565b6112396114e7565b6107c08161150c565b6109c16114e7565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806112d057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112c45f516020615f9d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c15760405163703e46dd60e11b815260040160405180910390fd5b6107c06111d5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611350575060408051601f3d908101601f1916820190925261134d91810190611bcb565b60015b61136f5781604051634c9c8ce360e01b81526004016111c39190611812565b5f516020615f9d5f395f51905f52811461139f57604051632a87526960e21b8152600481018290526024016111c3565b6113a98383611514565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c15760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f620f42406114768385611a8b565b6114809190611ab5565b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526114e1908590611569565b50505050565b6114ef6115cc565b6109c157604051631afcd79f60e31b815260040160405180910390fd5b61119a6114e7565b61151d826115e5565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611561576113a9828261163f565b6107de6116b1565b5f5f60205f8451602086015f885af180611588576040513d5f823e3d81fd5b50505f513d9150811561159f5780600114156115ac565b6001600160a01b0384163b155b156114e15783604051635274afe760e01b81526004016111c39190611812565b5f6115d5611207565b54600160401b900460ff16919050565b806001600160a01b03163b5f036116115780604051634c9c8ce360e01b81526004016111c39190611812565b5f516020615f9d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161165b9190611be2565b5f60405180830381855af49150503d805f8114611693576040519150601f19603f3d011682016040523d82523d5f602084013e611698565b606091505b50915091506116a88583836116d0565b95945050505050565b34156109c15760405163b398979f60e01b815260040160405180910390fd5b6060826116e5576116e082611723565b611480565b81511580156116fc57506001600160a01b0384163b155b1561171c5783604051639996b31560e01b81526004016111c39190611812565b5092915050565b80511561173257805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b6143a480611bf983390190565b5f60208284031215611768575f5ffd5b5035919050565b6001600160a01b03811681146107c0575f5ffd5b5f5f5f5f5f60a08688031215611797575f5ffd5b85356117a28161176f565b945060208601356117b28161176f565b935060408601356117c28161176f565b925060608601356117d28161176f565b915060808601356117e28161176f565b809150509295509295909350565b5f60208284031215611800575f5ffd5b813562ffffff81168114611480575f5ffd5b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561184b575f5ffd5b82356118568161176f565b915060208301356001600160401b03811115611870575f5ffd5b8301601f81018513611880575f5ffd5b80356001600160401b0381111561189957611899611826565b604051601f8201601f19908116603f011681016001600160401b03811182821017156118c7576118c7611826565b6040528181528282016020018710156118de575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561190d575f5ffd5b81356114808161176f565b5f5f60408385031215611929575f5ffd5b82356119348161176f565b915060208301356119448161176f565b809150509250929050565b8035801515811461195e575f5ffd5b919050565b5f5f5f5f60808587031215611976575f5ffd5b8435935060208501359250604085013591506119946060860161194f565b905092959194509250565b5f5f5f5f5f5f60a087890312156119b4575f5ffd5b863595506119c46020880161194f565b9450604087013593506060870135925060808701356001600160401b038111156119ec575f5ffd5b8701601f810189136119fc575f5ffd5b80356001600160401b03811115611a11575f5ffd5b896020828401011115611a22575f5ffd5b60208201935080925050509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6114806020830184611a37565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761122b5761122b611a77565b8082018082111561122b5761122b611a77565b5f82611acf57634e487b7160e01b5f52601260045260245ffd5b500490565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a08201525f60a0830151611b1b60c084018215159052565b5060c083015160e083015260e0830151610100830152610100830151610120830152610120830151610140830152610140830151610160830152610160830151610180830152610180830151611b7d6101a08401826001600160a01b03169052565b506101a08301516101e06101c0840152611b9b610200840182611a37565b90506101c08401516101e08401528091505092915050565b5f60018201611bc457611bc4611a77565b5060010190565b5f60208284031215611bdb575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe60e060405234801561000f575f5ffd5b506040516143a43803806143a483398101604081905261002e916101e8565b846001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161016b565b506001600160a01b038b16158061008357506001600160a01b038916155b8061009557506001600160a01b038816155b156100b35760405163e6c4247b60e01b815260040160405180910390fd5b865f036100d357604051630a1a738560e11b815260040160405180910390fd5b6019805462ffffff90941662ffffff199515156301000000029590951663ffffffff199094169390931793909317909155600280546001600160a01b039a8b1661010002610100600160a81b031990911617905560178054988a166001600160a01b0319998a16179055601b55948716608052506003805493909616929094169190911790935560a09290925260c0526018556102ae565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ce575f5ffd5b50565b805162ffffff811681146101e3575f5ffd5b919050565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e031215610203575f5ffd5b8b5161020e816101ba565b60208d0151909b5061021f816101ba565b60408d0151909a50610230816101ba565b60608d0151909950610241816101ba565b60808d015160a08e015160c08f0151929a509098509650610261816101ba565b60e08d01519095508015158114610276575f5ffd5b93506102856101008d016101d1565b6101208d0151610140909d01519b9e9a9d50989b979a9699959894979396949593949392505050565b60805160a05160c05161407f6103255f395f81816115900152612cc201525f8181612c9e0152612d0201525f8181610ec501528181611003015281816110970152818161160a0152818161196101528181611cec01528181611d8401528181611e9f01528181611f310152612b1c015261407f5ff3fe608060405260043610610197575f3560e01c8063ada4ef30116100df578063db0fff3711610083578063db0fff37146104bc578063e47a9d46146104d1578063ea0e51a5146104ee578063ea35e80514610503578063f1545c0f14610517578063f2fde38b14610536578063ff456d9514610555578063fff097d014610574575f5ffd5b8063ada4ef30146103a2578063b0d26168146103c1578063b557478a146103ec578063b88a802f1461041a578063ccfc45691461042e578063d5af196b1461044d578063d76a09f41461046c578063d9cf9b4b1461048e575f5ffd5b8063715018a611610146578063715018a6146102b457806373b2e80e146102c85780638a5fc0f9146102f65780638da5cb5b1461030f578063948b557a14610334578063955d7b561461035557806398c079381461036e5780639b46a16414610383575f5ffd5b806309eef43e146101a25780631973f028146101e45780631af19dd31461021c5780632c2e8faf146102555780634ab312181461027657806356069c0a1461028b578063590e1ae3146102a0575f5ffd5b3661019e57005b5f5ffd5b3480156101ad575f5ffd5b506101cf6101bc36600461380a565b602080525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ef575f5ffd5b506101f8610593565b6040805193845260208401929092526001600160a01b0316908201526060016101db565b348015610227575f5ffd5b5061024761023636600461380a565b60216020525f908152604090205481565b6040519081526020016101db565b348015610260575f5ffd5b5061027461026f3660046138e9565b61086d565b005b348015610281575f5ffd5b5061024760185481565b348015610296575f5ffd5b50610247601a5481565b3480156102ab575f5ffd5b50610274610c3d565b3480156102bf575f5ffd5b5061027461111e565b3480156102d3575f5ffd5b506101cf6102e236600461380a565b60236020525f908152604090205460ff1681565b348015610301575f5ffd5b506014546101cf9060ff1681565b34801561031a575f5ffd5b505f546001600160a01b03165b6040516101db9190613922565b34801561033f575f5ffd5b5061034861112f565b6040516101db9190613964565b348015610360575f5ffd5b506002546101cf9060ff1681565b348015610379575f5ffd5b5061024760135481565b34801561038e575f5ffd5b5061027461039d366004613a87565b6112d1565b3480156103ad575f5ffd5b506102746103bc36600461380a565b611a5f565b3480156103cc575f5ffd5b506102476103db366004613ace565b60226020525f908152604090205481565b3480156103f7575f5ffd5b506101cf61040636600461380a565b601e6020525f908152604090205460ff1681565b348015610425575f5ffd5b50610274611b27565b348015610439575f5ffd5b5061027461044836600461380a565b611fa9565b348015610458575f5ffd5b50610274610467366004613afd565b612061565b348015610477575f5ffd5b5060025461010090046001600160a01b0316610327565b348015610499575f5ffd5b506101cf6104a836600461380a565b601d6020525f908152604090205460ff1681565b3480156104c7575f5ffd5b5061024760015481565b3480156104dc575f5ffd5b506003546001600160a01b0316610327565b3480156104f9575f5ffd5b50610247601b5481565b34801561050e575f5ffd5b506102476123d3565b348015610522575f5ffd5b50610274610531366004613b57565b612720565b348015610541575f5ffd5b5061027461055036600461380a565b612ba9565b348015610560575f5ffd5b5061027461056f366004613b9a565b612bef565b34801561057f575f5ffd5b50601654610327906001600160a01b031681565b6002545f908190819060ff16156105bd57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161065990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461068590613caa565b80156106d05780601f106106a7576101008083540402835291602001916106d0565b820191905f5260205f20905b8154815290600101906020018083116106b357829003601f168201915b50505050508152602001600e8201548152505090505f5f5f5f5f8561010001516001600160401b0381111561070757610707613823565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b5090505f61074c87602001518861010001518960e00151613079565b9194509250905060018111156107f8575f195f805b838110156107ee575f85828151811061077c5761077c613ce2565b6020908102919091018101515f818152602490925260408220549092506107a590600190613d0a565b5f83815260246020526040812080549293509091839081106107c9576107c9613ce2565b905f5260205f2001549050858110156107e3578095508294505b505050600101610761565b5095506108159050565b815f8151811061080a5761080a613ce2565b602002602001015194505b6015610822600187613d0a565b8154811061083257610832613ce2565b5f918252602090912001546101208801516001600160a01b03909116945061085b908490613d1d565b949a9499509297509295505050505050565b600254339060ff161561089357604051637d66929f60e01b815260040160405180910390fd5b81515f036108b4576040516309bde33960e01b815260040160405180910390fd5b6001600160a01b0381166108db5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff1661091357604051636922322f60e11b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a08401916109af90613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546109db90613caa565b8015610a265780601f106109fd57610100808354040283529160200191610a26565b820191905f5260205f20905b815481529060010190602001808311610a0957829003601f168201915b50505050508152602001600e820154815250509050601b548160c00151610a4d9190613d3c565b4210610a6c57604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b0382165f908152601f602052604081208054610a8e90613caa565b9050118015610ac157506001600160a01b0382165f908152601f602052604081206001018054610abd90613caa565b9050115b15610adf5760405163523317c160e11b815260040160405180910390fd5b82516020808501919091206001600160a01b0384165f908152601f90925260408220909101604051610b119190613d4f565b604051809103902003610b37576040516309bde33960e01b815260040160405180910390fd5b6001600160a01b0382165f908152601f60205260409020600101610b5b8482613e0b565b5060016004600e015f828254610b719190613d3c565b909155505061016081015160125403610bed5742600a819055601854610b9691613d3c565b600b8190555f601b819055600a5460405130937fa58efc2623d1ecbe2a1fd15d8fe729d9a61661ca78d23dcefa3b37327b32bb8993610be49383526020830191909152604082015260600190565b60405180910390a25b816001600160a01b0316306001600160a01b03167f8833c4ef1be80b2c2b9885c3116db7d4219b759806d074cda5269b46a718946a85604051610c309190613ec5565b60405180910390a3505050565b610c456132f5565b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a0840191610ce190613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90613caa565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b5050509183525050600e919091015460209091015261018081015190915033906001600160a01b03168103610ef2576001600160a01b0381165f908152601e602052604090205460ff1615610dc057604051630c8d9eab60e31b815260040160405180910390fd5b816101600151826101400151148015610ddc5750600154600714155b15610dfa576040516345b4917560e11b815260040160405180910390fd5b600154600703610e29578160e00151421015610e295760405163c492f0e760e01b815260040160405180910390fd5b60135415610e4a576040516356ff330b60e11b815260040160405180910390fd5b8160c00151421015610e6f576040516371dcf04960e01b815260040160405180910390fd5b60025460ff16610e87576002805460ff191660011790555b6001600160a01b038181165f908152601e6020526040908190208054600160ff199182168117909255600280549091169091179055830151610eed917f00000000000000000000000000000000000000000000000000000000000000001690839061333c565b6110c1565b600154600714158015610f08575060025460ff16155b15610f26576040516361491ef960e11b815260040160405180910390fd5b60135415610f47576040516356ff330b60e11b815260040160405180910390fd5b60025460ff16610f5f576002805460ff191660011790555b6001600160a01b0381165f908152601e602052604090205460ff1615610f9857604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff16610fd057604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b038082165f908152601e6020526040808220805460ff19166001179055516370a0823160e01b815290917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611038903090600401613922565b602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190613ed7565b90505f611088828560400151613394565b90506110be6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016848361333c565b50505b806001600160a01b0316306001600160a01b03167f39bed68a008a68cbf907d7ff6bc3629912af6516cb837cfa3f871ad9f2b8a944846040015160405161110a91815260200190565b60405180910390a3505061111c6133a8565b565b6111266133bf565b61111c5f6133eb565b6111a5604051806101e001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b03168152602001606081526020015f81525090565b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180549192916101a08401919061124290613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461126e90613caa565b80156112b95780601f10611290576101008083540402835291602001916112b9565b820191905f5260205f20905b81548152906001019060200180831161129c57829003601f168201915b50505050508152602001600e82015481525050905090565b6112d96132f5565b600254339060ff16156112ff57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161139b90613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546113c790613caa565b80156114125780601f106113e957610100808354040283529160200191611412565b820191905f5260205f20905b8154815290600101906020018083116113f557829003601f168201915b50505050508152602001600e820154815250509050845f1480611439575080610100015185115b1561145757604051632a71953160e01b815260040160405180910390fd5b8061018001516001600160a01b0316826001600160a01b03160361148e57604051632d073dab60e21b815260040160405180910390fd5b806101600151816101400151146114b8576040516351c904c960e01b815260040160405180910390fd5b8060200151601354106114de576040516356ff330b60e11b815260040160405180910390fd5b6114ea8585858561343a565b8060e00151421061150e57604051637a19ed0560e01b815260040160405180910390fd5b806101600151816101c00151141580156115385750601b548160c001516115359190613d3c565b42105b1561155657604051633fd0090160e11b815260040160405180910390fd5b6001600160a01b0382165f90815260208052604090205460ff161561158e57604051637c9a1cf960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060135411156115d15760405163d9421b5560e01b815260040160405180910390fd5b6013545f0361199457620f4240601c5f8282546115ee9190613d0a565b909155505060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906116589073e592427a0aece92de3edee1f18e0157c0586156490620f424090600401613eee565b6020604051808303815f875af1158015611674573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116989190613f07565b506040805160a08101825273fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b60c0820152607d60ea1b60d48201527382af49447d8a07e3bd95bd0d56f35241523fbab160601b60d7820152815160cb81830301815260eb8201835281523060208201525f91810161170f4261012c613d3c565b8152620f424060208201525f6040918201819052905163c04b8d5960e01b81529192509073e592427a0aece92de3edee1f18e0157c058615649063c04b8d599061175d908590600401613f29565b6020604051808303815f875af1158015611779573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179d9190613ed7565b604051632e1a7d4d60e01b8152600481018290529091507382af49447d8a07e3bd95bd0d56f35241523fbab190632e1a7d4d906024015f604051808303815f87803b1580156117ea575f5ffd5b505af11580156117fc573d5f5f3e3d5ffd5b50506017546040515f93506001600160a01b03909116915083908381818185875af1925050503d805f811461184c576040519150601f19603f3d011682016040523d82523d5f602084013e611851565b606091505b5050905080611873576040516371037f3160e01b815260040160405180910390fd5b6019546301000000900460ff161561194d575f6118e473fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb97382af49447d8a07e3bd95bd0d56f35241523fbab173f3eec6bd2934e7c365912c7697876a0dca8c52c9601c546101f460195f9054906101000a900462ffffff16613547565b604051630852cd8d60e31b81526004810182905290915073f3eec6bd2934e7c365912c7697876a0dca8c52c9906342966c68906024015f604051808303815f87803b158015611931575f5ffd5b505af1158015611943573d5f5f3e3d5ffd5b5050505050611990565b600254601c54611990916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692610100909204169061333c565b5050505b5f858152602460209081526040808320805460018181018355918552838520429101556001600160a01b0386168452828052818420805460ff1916909117905560218252808320889055878352602290915281208054916119f483613f80565b909155505060138054905f611a0883613f80565b9190505550816001600160a01b03167fd0e6c39f2e086dc49f1524b47725526a56945cd1ff661f37976f1725a1e5698686604051611a4891815260200190565b60405180910390a25050611a5a6133a8565b505050565b611a676133bf565b6001600160a01b038116611a8e5760405163e6c4247b60e01b815260040160405180910390fd5b6002546001600160a01b038083166101009092041603611ac1576040516313f1bf1d60e31b815260040160405180910390fd5b6002546040516001600160a01b0380841692610100900416907fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e7078905f90a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b611b2f6132f5565b60025460ff1615611b5357604051637d66929f60e01b815260040160405180910390fd5b601454339060ff16611b6957611b676123d3565b505b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a0840191611c0590613caa565b80601f0160208091040260200160405190810160405280929190818152602001828054611c3190613caa565b8015611c7c5780601f10611c5357610100808354040283529160200191611c7c565b820191905f5260205f20905b815481529060010190602001808311611c5f57829003601f168201915b5050509183525050600e91909101546020909101526016549091505f906001600160a01b038481169116148015611cb457508160a001515b15611df8576001600160a01b038084165f90815260236020526040808220805460ff19166001179055516370a0823160e01b815290917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611d21903090600401613922565b602060405180830381865afa158015611d3c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d609190613ed7565b90505f611d7082855f0151613394565b601654909150611dad906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691168361333c565b60165484516040519081526001600160a01b03909116907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200160405180910390a25050611f9e565b6001600160a01b0383165f9081526023602052604090205460ff1680611e375750601a546001600160a01b0384165f9081526021602052604090205414155b15611e5557604051637c75aa6f60e11b815260040160405180910390fd5b8160200151826101200151611e6a9190613d1d565b6001600160a01b038085165f90815260236020526040808220805460ff19166001179055516370a0823160e01b8152929350917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190611ed6903090600401613922565b602060405180830381865afa158015611ef1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f159190613ed7565b90505f611f228284613394565b9050611f586001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868361333c565b846001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724184604051611f9391815260200190565b60405180910390a250505b50505061111c6133a8565b611fb16133bf565b6001600160a01b038116611fd85760405163e6c4247b60e01b815260040160405180910390fd5b6003546001600160a01b03808316911603612006576040516313f1bf1d60e31b815260040160405180910390fd5b6003546040516001600160a01b038084169216907f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df905f90a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6120696132f5565b60025460ff161561208d57604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161212990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461215590613caa565b80156121a05780601f10612177576101008083540402835291602001916121a0565b820191905f5260205f20905b81548152906001019060200180831161218357829003601f168201915b50505050508152602001600e820154815250509050811580156121c557506001546007145b156121e35760405163c7eff8f760e01b815260040160405180910390fd5b811561223d578060c0015142101561220e576040516338af65f760e01b815260040160405180910390fd5b806101600151816101400151036122385760405163a91acdc360e01b815260040160405180910390fd5b612262565b8060e00151421015612262576040516338af65f760e01b815260040160405180910390fd5b428511612282576040516338af65f760e01b815260040160405180910390fd5b61228e8585853361343a565b81156122bb57600a859055601854601b546122a99087613d3c565b6122b39190613d3c565b600b5561237d565b602081015160135460405163d494f49360e01b8152600481019290925260248201525f9073a12db630a09ab75de0840ef36cbe9050e7e1cf189063d494f49390604401602060405180830381865af4158015612319573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233d9190613f07565b9050801561235e57604051633102c16960e21b815260040160405180910390fd5b600b8690556001805481905f90612376908390613d3c565b9091555050505b600a54600b5460405130927f1330a2b7f70d74408554b6e5d73c6aefa8d88e43a5cf2dde8220b95a7bb23e35926123bc92918252602082015260400190565b60405180910390a2506123cd6133a8565b50505050565b6002545f9060ff16156123f957604051637d66929f60e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161249590613caa565b80601f01602080910402602001604051908101604052809291908181526020018280546124c190613caa565b801561250c5780601f106124e35761010080835404028352916020019161250c565b820191905f5260205f20905b8154815290600101906020018083116124ef57829003601f168201915b5050509183525050600e919091015460209091015260145490915060ff16156125485760405163025cfd3760e51b815260040160405180910390fd5b5f5f8261010001516001600160401b0381111561256757612567613823565b604051908082528060200260200182016040528015612590578160200160208202803683370190505b5090505f6125ac84602001518561010001518660e00151613079565b919450925090506001811115612658575f195f805b8381101561264e575f8582815181106125dc576125dc613ce2565b6020908102919091018101515f8181526024909252604082205490925061260590600190613d0a565b5f838152602460205260408120805492935090918390811061262957612629613ce2565b905f5260205f200154905085811015612643578095508294505b5050506001016125c1565b50601a5550612679565b815f8151811061266a5761266a613ce2565b6020026020010151601a819055505b60156001601a5461268a9190613d0a565b8154811061269a5761269a613ce2565b5f91825260209091200154601680546001600160a01b0319166001600160a01b039092169190911790556014805460ff191660011790556005839055601a5460405133917f56482e870a733859b0a577d9a75f12c17bd7754ab7b2723301bfc952988b3c799161270c91815260200190565b60405180910390a2601a5494505050505090565b6127286132f5565b60025460ff161561274c57604051637d66929f60e01b815260040160405180910390fd5b80515f0361276d576040516309bde33960e01b815260040160405180910390fd5b604080516101e0810182526004805482526005546020830152600654928201929092526007546060820152600854608082015260095460ff16151560a0820152600a5460c0820152600b5460e0820152600c54610100820152600d54610120820152600e54610140820152600f546101608201526010546001600160a01b0316610180820152601180545f93916101a084019161280990613caa565b80601f016020809104026020016040519081016040528092919081815260200182805461283590613caa565b80156128805780601f1061285757610100808354040283529160200191612880565b820191905f5260205f20905b81548152906001019060200180831161286357829003601f168201915b50505050508152602001600e8201548152505090505f3390508160c0015142106128bd57604051637c75aa6f60e11b815260040160405180910390fd5b6001600160a01b0381165f908152601d602052604090205460ff16156128f65760405163ca6a758f60e01b815260040160405180910390fd5b816101600151826101400151036129205760405163a91acdc360e01b815260040160405180910390fd5b816040015184101561294557604051630a1a738560e11b815260040160405180910390fd5b6001600160a01b0381165f908152601f602052604090206129668482613e0b565b50601580546001810182555f9182527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b03841617905560a083015115612a135761016083015183515f916129cd91613d1d565b6129d79087613d0a565b90506129e2816136ef565b91508015806129ef575081155b15612a0d57604051630b6de1b760e31b815260040160405180910390fd5b50612a3e565b612a1c856136ef565b9050805f03612a3e57604051630b6de1b760e31b815260040160405180910390fd5b600e8054905f612a4d83613f80565b919050555080601c5f828254612a639190613d3c565b90915550506001600160a01b0382165f908152601d60205260409020805460ff19166001179055610160830151600e5403612b0f5742600a819055601854601b549091612ab09190613d3c565b612aba9190613d3c565b600b819055600a54601b5460405130937fa58efc2623d1ecbe2a1fd15d8fe729d9a61661ca78d23dcefa3b37327b32bb8993612b06939083526020830191909152604082015260600190565b60405180910390a25b612b446001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683308861370b565b816001600160a01b03167fafb5cb6994f61feab63c8d681d837aeb177aa31eb978c2fb94091b403e17cb1e30868661014001516001612b839190613d3c565b604051612b9293929190613f98565b60405180910390a2505050612ba56133a8565b5050565b612bb16133bf565b6001600160a01b038116612be3575f604051631e4fbdf760e01b8152600401612bda9190613922565b60405180910390fd5b612bec816133eb565b50565b5f612bf8613744565b805490915060ff600160401b82041615906001600160401b03165f81158015612c1e5750825b90505f826001600160401b03166001148015612c395750303b155b905081158015612c47575080155b15612c655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612c8f57845460ff60401b1916600160401b1785555b612c976133bf565b60208601517f0000000000000000000000000000000000000000000000000000000000000000905f907f000000000000000000000000000000000000000000000000000000000000000014612cff5760405163d9421b5560e01b815260040160405180910390fd5b5f7f0000000000000000000000000000000000000000000000000000000000000000896101600151612d319190613fcb565b90508860a0015115612da2575f612d4d8a5f01516109c461376c565b9050612d598183613d3c565b92505f8a610160015182612d6d9190613d1d565b9050805f03612d8f57604051630b6de1b760e31b815260040160405180910390fd5b612d998186613d3c565b94505050612da6565b8091505b5f612db0836136ef565b9050805f03612dd257604051630b6de1b760e31b815260040160405180910390fd5b5f612ddd8285613d0a565b90505f620f4240612df16207a12088613fcb565b612dfb9190613d1d565b90505f8c6020015183612e0e9190613d1d565b905081601c5f828254612e219190613d3c565b909155505060608d018190526101208d018390526101408d0151600114612e5b57604051633a77796d60e01b815260040160405180910390fd5b6001601d5f8f61018001516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555060158d6101800151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055508c6101a00151601f5f8f61018001516001600160a01b03166001600160a01b031681526020019081526020015f205f60028110612f2557612f25613ce2565b0190612f319082613e0b565b508c51600490815560208e015160055560408e015160065560608e015160075560808e015160085560a08e01516009805460ff191691151591909117905560c08e0151600a5560e08e0151600b556101008e0151600c556101208e0151600d556101408e0151600e556101608e0151600f556101808e0151601080546001600160a01b0319166001600160a01b039092169190911790556101a08e01518e9190601190612fde9082613e0b565b506101c082015181600e01559050507fa4404ae1e9c8acc948c6b61b9df8106ad50ecd0ea6429cfdb54c69d2ab0ac89d8d60405161301c9190613964565b60405180910390a150505050505050831561307157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f60605f5f73a12db630a09ab75de0840ef36cbe9050e7e1cf1863d494f493886013546040518363ffffffff1660e01b81526004016130c2929190918252602082015260400190565b602060405180830381865af41580156130dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131019190613f07565b9050801580156131145750600154600714155b156131325760405163907c5f1960e01b815260040160405180910390fd5b60405163cb7e3a1360e01b8152600481018890525f9073a12db630a09ab75de0840ef36cbe9050e7e1cf189063cb7e3a1390602401602060405180830381865af4158015613182573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a69190613ed7565b90505f60015b8881116131e0575f8181526022602052604090205483116131d057600191506131e0565b6131d981613f80565b90506131ac565b50801580156131ee57508642105b1561320c57604051633fc30bd160e11b815260040160405180910390fd5b5f5f896001600160401b0381111561322657613226613823565b60405190808252806020026020018201604052801561324f578160200160208202803683370190505b5090505f60015b8b81116132e2575f818152602260205260409020548481111561329e578094506001925081845f8151811061328d5761328d613ce2565b6020026020010181815250506132d1565b8481036132d157818484815181106132b8576132b8613ce2565b6020908102919091010152826132cd81613f80565b9350505b506132db81613f80565b9050613256565b50919b909a509098509650505050505050565b5f51602061402a5f395f51905f525c1561332257604051633ee5aeb560e01b815260040160405180910390fd5b61111c60015f51602061402a5f395f51905f525b90613785565b611a5a83846001600160a01b031663a9059cbb8585604051602401613362929190613eee565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061378c565b5f8282188284100282185b90505b92915050565b61111c5f5f51602061402a5f395f51905f52613336565b5f546001600160a01b0316331461111c573360405163118cdaa760e01b8152600401612bda9190613922565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600354604051632f34148760e11b8152600481018690526001600160a01b03838116602483015273a12db630a09ab75de0840ef36cbe9050e7e1cf189263238a4d1e929116908390635e68290e90604401602060405180830381865af41580156134a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ca9190613ed7565b86866040518563ffffffff1660e01b81526004016134eb9493929190613fe2565b602060405180830381865af4158015613506573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352a9190613f07565b6123cd57604051638baa579f60e01b815260040160405180910390fd5b60405163095ea7b360e01b81525f906001600160a01b0388169063095ea7b39061358b9073e592427a0aece92de3edee1f18e0157c05861564908890600401613eee565b6020604051808303815f875af11580156135a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135cb9190613f07565b506040805160a081019091526bffffffffffffffffffffffff19606089811b821660c08401526001600160e81b031960e887811b821660d48601528a831b841660d786015286901b1660eb84015287901b1660ee8201525f9080610102810160408051601f19818403018152918152908252306020830152016136504261012c613d3c565b81526020018681526020015f81525090505f73e592427a0aece92de3edee1f18e0157c058615646001600160a01b031663c04b8d59836040518263ffffffff1660e01b81526004016136a29190613f29565b6020604051808303815f875af11580156136be573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e29190613ed7565b9998505050505050505050565b5f620f42406137016207a12084613fcb565b6133a29190613d1d565b6040516001600160a01b0384811660248301528381166044830152606482018390526123cd9186918216906323b872dd90608401613362565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006133a2565b5f620f424061377b8385613fcb565b61339f9190613d1d565b80825d5050565b5f5f60205f8451602086015f885af1806137ab576040513d5f823e3d81fd5b50505f513d915081156137c25780600114156137cf565b6001600160a01b0384163b155b156123cd5783604051635274afe760e01b8152600401612bda9190613922565b80356001600160a01b0381168114613805575f5ffd5b919050565b5f6020828403121561381a575f5ffd5b61339f826137ef565b634e487b7160e01b5f52604160045260245ffd5b6040516101e081016001600160401b038111828210171561385a5761385a613823565b60405290565b5f82601f83011261386f575f5ffd5b81356001600160401b0381111561388857613888613823565b604051601f8201601f19908116603f011681016001600160401b03811182821017156138b6576138b6613823565b6040528181528382016020018510156138cd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156138f9575f5ffd5b81356001600160401b0381111561390e575f5ffd5b61391a84828501613860565b949350505050565b6001600160a01b0391909116815260200190565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a08201525f60a08301516139ab60c084018215159052565b5060c083015160e083015260e0830151610100830152610100830151610120830152610120830151610140830152610140830151610160830152610160830151610180830152610180830151613a0d6101a08401826001600160a01b03169052565b506101a08301516101e06101c0840152613a2b610200840182613936565b90506101c08401516101e08401528091505092915050565b5f5f83601f840112613a53575f5ffd5b5081356001600160401b03811115613a69575f5ffd5b602083019150836020828501011115613a80575f5ffd5b9250929050565b5f5f5f60408486031215613a99575f5ffd5b8335925060208401356001600160401b03811115613ab5575f5ffd5b613ac186828701613a43565b9497909650939450505050565b5f60208284031215613ade575f5ffd5b5035919050565b8015158114612bec575f5ffd5b803561380581613ae5565b5f5f5f5f60608587031215613b10575f5ffd5b8435935060208501356001600160401b03811115613b2c575f5ffd5b613b3887828801613a43565b9094509250506040850135613b4c81613ae5565b939692955090935050565b5f5f60408385031215613b68575f5ffd5b8235915060208301356001600160401b03811115613b84575f5ffd5b613b9085828601613860565b9150509250929050565b5f60208284031215613baa575f5ffd5b81356001600160401b03811115613bbf575f5ffd5b82016101e08185031215613bd1575f5ffd5b613bd9613837565b8135815260208083013590820152604080830135908201526060808301359082015260808083013590820152613c1160a08301613af2565b60a082015260c0828101359082015260e080830135908201526101008083013590820152610120808301359082015261014080830135908201526101608083013590820152613c6361018083016137ef565b6101808201526101a08201356001600160401b03811115613c82575f5ffd5b613c8e86828501613860565b6101a0830152506101c091820135918101919091529392505050565b600181811c90821680613cbe57607f821691505b602082108103613cdc57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156133a2576133a2613cf6565b5f82613d3757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156133a2576133a2613cf6565b5f5f8354613d5c81613caa565b600182168015613d735760018114613d8857613db5565b60ff1983168652811515820286019350613db5565b865f5260205f205f5b83811015613dad57815488820152600190910190602001613d91565b505081860193505b509195945050505050565b601f821115611a5a57805f5260205f20601f840160051c81016020851015613de55750805b601f840160051c820191505b81811015613e04575f8155600101613df1565b5050505050565b81516001600160401b03811115613e2457613e24613823565b613e3881613e328454613caa565b84613dc0565b6020601f821160018114613e6a575f8315613e535750848201515b5f19600385901b1c1916600184901b178455613e04565b5f84815260208120601f198516915b82811015613e995787850151825560209485019460019092019101613e79565b5084821015613eb657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f61339f6020830184613936565b5f60208284031215613ee7575f5ffd5b5051919050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215613f17575f5ffd5b8151613f2281613ae5565b9392505050565b602081525f825160a06020840152613f4460c0840182613936565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f60018201613f9157613f91613cf6565b5060010190565b6001600160a01b03841681526060602082018190525f90613fbb90830185613936565b9050826040830152949350505050565b80820281158282048414176133a2576133a2613cf6565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301375f818301608090810191909152601f909201601f19160101939250505056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220a10d44720d5958002fae5c43b4bebb73329ad8c2cc776bbc2fe65c761a176aa964736f6c634300081c0033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212202c2fbb9caf814926d9fe19b31f6bb92114cb812a2b8568ce65f59edea16f232f64736f6c634300081c0033