@keep-network/tbtc-v2 0.1.1-dev.97 → 0.1.1-dev.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/Bank.json +8 -8
- package/artifacts/Bridge.json +25 -25
- package/artifacts/Deposit.json +9 -9
- package/artifacts/DepositSweep.json +9 -9
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/EcdsaSortitionPool.json +2 -2
- package/artifacts/Fraud.json +9 -9
- package/artifacts/KeepRegistry.json +1 -1
- package/artifacts/KeepStake.json +2 -2
- package/artifacts/KeepToken.json +2 -2
- package/artifacts/KeepTokenStaking.json +1 -1
- package/artifacts/MovingFunds.json +9 -9
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeaconStub.json +1 -1
- package/artifacts/Redemption.json +9 -9
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/Relay.json +9 -9
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +10 -10
- package/artifacts/TBTCToken.json +10 -10
- package/artifacts/TBTCVault.json +15 -15
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +11 -11
- package/artifacts/VendingMachineKeep.json +1 -1
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/WalletRegistry.json +5 -5
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +7 -7
- package/artifacts/solcInputs/{5e62cff1ead0900b07facca4b559e818.json → becdd5668a2170e95004d124119e4fcb.json} +6 -6
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +68 -68
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -2
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
- package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
- package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/BitcoinTx.sol +72 -39
- package/contracts/bridge/Bridge.sol +12 -12
- package/contracts/bridge/BridgeState.sol +83 -75
- package/contracts/bridge/Redemption.sol +84 -48
- package/export.json +12 -12
- package/package.json +2 -2
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"type": "event"
|
|
86
86
|
}
|
|
87
87
|
],
|
|
88
|
-
"bytecode": "0x613eb761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b6100763660046134aa565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613582565b6103af565b8180156100a957600080fd5b5061007b6100b836600461366b565b610787565b8180156100c957600080fd5b5061007b6100d83660046136db565b6107eb565b60006100ea868686610848565b905060006100f9878486610b38565b90506101488761010c602089018961376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d23915050565b60006101978861015b60408a018a61376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610e4c915050565b60608101519091506001600160401b0316156102175782816040015182606001516040516020016101f59392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f198184030181529190528051602090910120600183015561021f565b600060018301555b805160028301805460009061023e9084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102a391815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505089546004808c015460208601516040516356a6d9ef60e01b81526001600160a01b03928316938101939093526001600160401b0316602483015290911692506356a6d9ef9150604401600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050505050505050565b60008583836040516020016103c6939291906137f2565b60408051808303601f190181528282528051602091820120600081815260128c01835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b039081169386019390935260010154808316938501939093526801000000000000000083049091166060840152600160801b90910463ffffffff16608083018190529092506104ae5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b4288600f0154826080015163ffffffff166104c99190613816565b1061053b5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104a5565b6001600160601b031987166000908152601d89016020908152604091829020918301519083015161056c91906137ca565b6002820180546000906105899084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506105c48888888c610f83909392919063ffffffff16565b600083815260138a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000009190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560128e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516001600160601b03198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610700908890889061382e565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050505050505050505050565b6000808080808061079a878901896138b7565b9550955095509550955095506107de8b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f611170565b5050505050505050505050565b61083f87876107ff36899003890189613998565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611170915050565b50505050505050565b600061089461085a602085018561376e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061190d92505050565b6108e05760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104a5565b61092a6108f0604085018561376e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bd92505050565b6109765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104a5565b6109d961098660208501856139fc565b610993602086018661376e565b6109a0604088018861376e565b6109b060808a0160608b016139fc565b6040516020016109c596959493929190613a26565b604051602081830303815290604052611a60565b9050610a74610a286109ee604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8792505050565b610a32848061376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611a96565b610ae65760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104a5565b610b3184610af7604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ad492505050565b9392505050565b6001600160601b031982166000908152601d840160205260409020600181015480610ba55760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104a5565b808335610bb86040860160208701613a68565b610bc86060870160408801613a83565b604051602001610c059392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610c685760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6002820154600160c01b900460ff166001816005811115610c8b57610c8b613a9e565b1480610ca857506002816005811115610ca657610ca6613a9e565b145b610d1a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104a5565b50509392505050565b600080610d2f84611e43565b9092509050823582148015610d5e575063ffffffff8116610d566040850160208601613a68565b63ffffffff16145b610dd05760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104a5565b60016019860160008535610dea6040880160208901613a68565b604051602001610e1192919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610e7a85611f1e565b90925090506000610e8c836001613816565b6040517f1976a9140000000000000000000000000000000000000000000000000000000060208201526001600160601b03198716602482015261222b60f21b6038820152909150600090603a0160408051601f198184030181529082905280516020918201207f1600140000000000000000000000000000000000000000000000000000000000918301919091526001600160601b0319881660238301529150600090603701604051602081830303815290604052805190602001209050610f76898989604051806080016040528088815260200189815260200187815260200186815250611f35565b9998505050505050505050565b6001600160601b031983166000908152601d8501602052604090206002810154600160c01b900460ff166001816005811115610fc157610fc1613a9e565b1480610fde57506002816005811115610fdc57610fdc613a9e565b145b80610ffa57506005816005811115610ff857610ff8613a9e565b145b61106c5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104a5565b600181600581111561108057611080613a9e565b148061109d5750600281600581111561109b5761109b613a9e565b145b156111445760028601546010870154601188015484546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363d8dc404d93611111936bffffffffffffffffffffffff9091169290913391908b908b90600401613ab4565b600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b505050505b600181600581111561115857611158613a9e565b141561116857611168868661212f565b505050505050565b6001600160601b031986166000908152601d88016020526040902060016002820154600160c01b900460ff1660058111156111ad576111ad613a9e565b146111fa5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104a5565b6001810154806112565760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104a5565b808760000151886020015189604001516040516020016112a39392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146113065760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6000611336600060c01b86604051602001611322929190613b66565b604051602081830303815290604052612279565b905060008151116113af5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104a5565b8080519060200120896040516020016113d891906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156114625760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104a5565b600e8a01546001600160401b0390811690851610156114c35760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104a5565b600089866040516020016114d8929190613b96565b60408051808303601f190181529181528151602092830120600081815260128f01909352912060010154909150600160801b900463ffffffff16156115ab5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104a5565b600e8b01546000906801000000000000000090046001600160401b03166115d35760006115f7565b600e8c01546115f7906801000000000000000090046001600160401b031687613be1565b600e8d0154909150600160801b90046001600160401b031661161982886137ca565b6002870180546000906116369084906001600160401b0316613c07565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156116d75760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104a5565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601201600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a868660405161186a9493929190613c32565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b1580156118e657600080fd5b505af11580156118fa573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061191b84611f1e565b909250905080158061192e575060001982145b1561193d575060009392505050565b600061194a836001613816565b905060005b828110156119b0578551821061196b5750600095945050505050565b60006119778784612517565b9050600019811415611990575060009695505050505050565b61199a8184613816565b92505080806119a890613c81565b91505061194f565b5093519093149392505050565b60008060006119cb84611f1e565b90925090508015806119de575060001982145b156119ed575060009392505050565b60006119fa836001613816565b905060005b828110156119b05785518210611a1b5750600095945050505050565b6000611a27878461256b565b9050600019811415611a40575060009695505050505050565b611a4a8184613816565b9250508080611a5890613c81565b9150506119ff565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b60008385148015611aa5575081155b8015611ab057508251155b15611abd57506001611acc565b611ac9858486856125d1565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613c9c565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611bae57600080fd5b505afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190613c9c565b9050600080611bfc611bf787612679565b61270e565b905083811415611c0e57839150611c8c565b82811415611c1e57829150611c8c565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104a5565b6000611c9787612736565b9050600019811415611d115760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b600119811415611d635760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104a5565b600219811415611db55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104a5565b6003880154611dc49084613cb5565b811015611e395760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104a5565b5050505050505050565b6000806000611e5184611f1e565b91505080600114611eca5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104a5565b6000611ed6858261293d565b9050611ee181612b23565b9350611f15611eef82612b30565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f2c836000612b3d565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b83602001518110156120b2578351600090611f7790889061256b565b8551909150600090611f8b90899084612cb9565b90506000611f9882612d83565b90506000611fb66008808551611fae9190613cd4565b859190612cb9565b905086606001516001600160401b03166000148015611ff157506040880151815160208301201480611ff15750606088015181516020830120145b801561200657506000826001600160401b0316115b1561202b5763ffffffff851660408801526001600160401b0382166060880152612083565b60008061203a8d8c8587612df9565b9150915081896000018181516120509190613c07565b6001600160401b0316905250602089018051829190612070908390613c07565b6001600160401b03169052506001975050505b83886000018181516120959190613816565b9052508493506120aa9250839150613c819050565b915050611f5b565b50806121265760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104a5565b50949350505050565b6001600160601b031981166000908152601d83016020526040902060018101546121625761215d838361317d565b6121f9565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6001600160601b0319908116908316141561223657601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff1690601461225583613ceb565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b606060008260088151811061229057612290613d0b565b0160200151835160f89190911c91506122aa826009613d21565b60ff16146122c8575050604080516020810190915260008152919050565b826009815181106122db576122db613d0b565b016020015160f81c6123795760028160ff161015612309575050604080516020810190915260008152919050565b600083600a8151811061231e5761231e613d0b565b016020015160f81c9050612333600283613d46565b60ff1681141580612351575080602014158015612351575080601414155b1561236d57505060408051602081019091526000815292915050565b611acc84600b83612cb9565b600061238684600861321d565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156124635783600b815181106123e5576123e5613d0b565b60209101015160f81c601414158061243a5750612410600285516124099190613cd4565b859061321d565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b1561245657505060408051602081019091526000815292915050565b611acc84600c6014612cb9565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125005783600185516124bc9190613cd4565b815181106124cc576124cc613d0b565b60209101015160f81c6087146124f357505060408051602081019091526000815292915050565b611acc84600b6014612cb9565b505050604080516020810190915260008152919050565b6000806000612526858561322c565b90925090506000198214156125415760001992505050611a90565b8061254d836025613816565b6125579190613816565b612562906004613816565b95945050505050565b6000612578826009613816565b835110156125895750600019611a90565b6000806125a08561259b866008613816565b612b3d565b90925090506000198214156125bb5760001992505050611a90565b806125c7836009613816565b6125629190613816565b6000602084516125e19190613d69565b156125ee57506000611acc565b83516125fc57506000611acc565b818560005b865181101561266c57612615600284613d69565b6001141561263a5761263361262d8883016020015190565b8361326e565b9150612653565b6126508261264b8984016020015190565b61326e565b91505b60019290921c91612665602082613816565b9050612601565b5090931495945050505050565b60008061268783604861321d565b60e81c9050600083604b815181106126a1576126a1613d0b565b016020015160f81c905060006126d583600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006126e9600384613d46565b60ff1690506126fa81610100613e61565b6127049083613cb5565b9695505050505050565b6000611a907bffff00000000000000000000000000000000000000000000000000008361327a565b6000605082516127469190613d69565b156127545750600019919050565b506040805160808101909152605081526000908190815b84518110156129355761277f858383613286565b801561279f5761278f828461331b565b61279f5750600119949350505050565b60006127aa83612679565b90506127b583611a60565b9350806128f98560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561290c575060021995945050505050565b61291f6129188261270e565b8690613344565b945061292e9050605082613816565b905061276b565b505050919050565b606060008061294b85611f1e565b90925090506000198214156129c85760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b808410612a175760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104a5565b600080612a25846001613816565b905060005b86811015612aae57612a3c8883612517565b9250600019831415612a905760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612a9a8383613816565b915080612aa681613c81565b915050612a2a565b50612ab98782612517565b9150600019821415612b0d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612b18878284612cb9565b979650505050505050565b6020810151600090611a90565b6000611a9082602061321d565b6000806000612b4c85856133a2565b905060ff8116612b7e576000858581518110612b6a57612b6a613d0b565b016020015190935060f81c9150612cb29050565b83612b8a826001613d21565b60ff16612b979190613816565b85511015612bae5760001960009250925050612cb2565b60008160ff1660021415612bf357612be8612bd4612bcd876001613816565b889061321d565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612ca8565b8160ff1660041415612c1d57612c10611eef612bcd876001613816565b63ffffffff169050612ca8565b8160ff1660081415612ca857612c9c612c3a612bcd876001613816565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b606081612cd55750604080516020810190915260008152610b31565b6000612ce18385613816565b90508381118015612cf3575080855110155b612d3f5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b604051915082604083010160405282825283850182038460208701018481015b80821015612d7857815183830152602082019150612d5f565b505050509392505050565b600080612d8f8361342e565b60c01c90506000611acc8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008060008585604051602001612e11929190613b96565b60408051808303601f190181529181528151602092830120600081815260128b01909352912060010154909150600160801b900463ffffffff1615612fc8576000818152601288016020526040812060018101548154919291612e87916001600160401b0390811691600160a01b9004166137ca565b60018301549091506001600160401b0380881691612eb3916801000000000000000090910416836137ca565b6001600160401b031611158015612edc5750806001600160401b0316866001600160401b031611155b612f745760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104a5565b600191820154600084815260128b016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905593506001600160401b03169150613173565b600081815260138801602052604090206001810154600160801b900463ffffffff1661305b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104a5565b60018101548154600091613083916001600160401b0391821691600160a01b909104166137ca565b60018301549091506001600160401b03808816916130af916801000000000000000090910416836137ca565b6001600160401b0316111580156130d85750806001600160401b0316866001600160401b031611155b6131705760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104a5565b50505b5094509492505050565b6001600160601b031981166000818152601d8401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6000610b318383016020015190565b60008061323a836025613816565b8451101561324f575060001990506000612cb2565b6000806132618661259b876024613816565b9097909650945050505050565b6000610b31838361343a565b6000610b318284613e6d565b815160006132948284613816565b905082811180156132a6575080855110155b6132f25760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b826020860101602085018382015b80831015611e39578251825260209283019290910190613300565b60008061332784613468565b905082811461333a576000915050611a90565b5060019392505050565b60006133508284613816565b905082811015611a905760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016104a5565b60008282815181106133b6576133b6613d0b565b60209101015160f81c60ff14156133cf57506008611a90565b8282815181106133e1576133e1613d0b565b60209101015160f81c60fe14156133fa57506004611a90565b82828151811061340c5761340c613d0b565b60209101015160f81c60fd141561342557506002611a90565b50600092915050565b6000611a90828261321d565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611a90565b60006060828403121561348757600080fd5b50919050565b80356001600160601b0319811681146134a557600080fd5b919050565b600080600080600060e086880312156134c257600080fd5b8535945060208601356001600160401b03808211156134e057600080fd5b908701906080828a0312156134f457600080fd5b9094506040870135908082111561350a57600080fd5b5061351788828901613475565b9350506135278760608801613475565b915061353560c0870161348d565b90509295509295909350565b60008083601f84011261355357600080fd5b5081356001600160401b0381111561356a57600080fd5b602083019150836020828501011115612cb257600080fd5b6000806000806000806080878903121561359b57600080fd5b863595506135ab6020880161348d565b945060408701356001600160401b03808211156135c757600080fd5b818901915089601f8301126135db57600080fd5b8135818111156135ea57600080fd5b8a60208260051b85010111156135ff57600080fd5b60208301965080955050606089013591508082111561361d57600080fd5b5061362a89828a01613541565b979a9699509497509295939492505050565b6001600160a01b038116811461365157600080fd5b50565b80356001600160401b03811681146134a557600080fd5b60008060008060006080868803121561368357600080fd5b8535945060208601356136958161363c565b93506136a360408701613654565b925060608601356001600160401b038111156136be57600080fd5b6136ca88828901613541565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136f757600080fd5b873596506137076020890161348d565b95506137168960408a01613475565b945060a08801356137268161363c565b935060c08801356001600160401b0381111561374157600080fd5b61374d8a828b01613541565b9094509250613760905060e08901613654565b905092959891949750929550565b6000808335601e1984360301811261378557600080fd5b8301803591506001600160401b0382111561379f57600080fd5b602001915036819003821315612cb257600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137ea576137ea6137b4565b039392505050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60008219821115613829576138296137b4565b500190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff811681146134a557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138af576138af613871565b604052919050565b60008060008060008060c087890312156138d057600080fd5b86356138db8161363c565b955060206138ea88820161348d565b9550604088013594506138ff6060890161385d565b935061390d60808901613654565b925060a08801356001600160401b038082111561392957600080fd5b818a0191508a601f83011261393d57600080fd5b81358181111561394f5761394f613871565b613961601f8201601f19168501613887565b91508082528b8482850101111561397757600080fd5b80848401858401376000848284010152508093505050509295509295509295565b6000606082840312156139aa57600080fd5b604051606081018181106001600160401b03821117156139cc576139cc613871565b604052823581526139df6020840161385d565b60208201526139f060408401613654565b60408201529392505050565b600060208284031215613a0e57600080fd5b81356001600160e01b031981168114610b3157600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a7a57600080fd5b610b318261385d565b600060208284031215613a9557600080fd5b610b3182613654565b634e487b7160e01b600052602160045260246000fd5b600060a082016bffffffffffffffffffffffff89168352602088818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b275763ffffffff613b148561385d565b1682529282019290820190600101613afe565b509a9950505050505050505050565b60005b83811015613b51578181015183820152602001613b39565b83811115613b60576000848401525b50505050565b6001600160c01b03198316815260008251613b88816008850160208701613b36565b919091016008019392505050565b6bffffffffffffffffffffffff198316815260008251613bbd816014850160208701613b36565b919091016014019392505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613bfb57613bfb613bcb565b92169190910492915050565b60006001600160401b03808316818516808303821115613c2957613c296137b4565b01949350505050565b6080815260008551806080840152613c518160a0850160208a01613b36565b6001600160401b03958616602084015293851660408301525092166060830152601f01601f19160160a001919050565b6000600019821415613c9557613c956137b4565b5060010190565b600060208284031215613cae57600080fd5b5051919050565b6000816000190483118215151615613ccf57613ccf6137b4565b500290565b600082821015613ce657613ce66137b4565b500390565b600063ffffffff821680613d0157613d016137b4565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613d3e57613d3e6137b4565b019392505050565b600060ff821660ff841680821015613d6057613d606137b4565b90039392505050565b600082613d7857613d78613bcb565b500690565b600181815b80851115613db8578160001904821115613d9e57613d9e6137b4565b80851615613dab57918102915b93841c9390800290613d82565b509250929050565b600082613dcf57506001611a90565b81613ddc57506000611a90565b8160018114613df25760028114613dfc57613e18565b6001915050611a90565b60ff841115613e0d57613e0d6137b4565b50506001821b611a90565b5060208310610133831016604e8410600b8410161715613e3b575081810a611a90565b613e458383613d7d565b8060001904821115613e5957613e596137b4565b029392505050565b6000610b318383613dc0565b600082613e7c57613e7c613bcb565b50049056fea26469706673582212202668442d1c5d34d45b9751658e8b0473b64d2a0e6671aac5ea588032c935ebf164736f6c63430008090033",
|
|
89
|
-
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b6100763660046134aa565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613582565b6103af565b8180156100a957600080fd5b5061007b6100b836600461366b565b610787565b8180156100c957600080fd5b5061007b6100d83660046136db565b6107eb565b60006100ea868686610848565b905060006100f9878486610b38565b90506101488761010c602089018961376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d23915050565b60006101978861015b60408a018a61376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610e4c915050565b60608101519091506001600160401b0316156102175782816040015182606001516040516020016101f59392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60408051601f198184030181529190528051602090910120600183015561021f565b600060018301555b805160028301805460009061023e9084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102a391815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561031457600080fd5b505af1158015610328573d6000803e3d6000fd5b505089546004808c015460208601516040516356a6d9ef60e01b81526001600160a01b03928316938101939093526001600160401b0316602483015290911692506356a6d9ef9150604401600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050505050505050565b60008583836040516020016103c6939291906137f2565b60408051808303601f190181528282528051602091820120600081815260128c01835283902060a08501845280546001600160a01b0381168652600160a01b90046001600160401b039081169386019390935260010154808316938501939093526801000000000000000083049091166060840152600160801b90910463ffffffff16608083018190529092506104ae5760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b4288600f0154826080015163ffffffff166104c99190613816565b1061053b5760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104a5565b6001600160601b031987166000908152601d89016020908152604091829020918301519083015161056c91906137ca565b6002820180546000906105899084906001600160401b03166137ca565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506105c48888888c610f83909392919063ffffffff16565b600083815260138a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000009190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560128e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516001600160601b03198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610700908890889061382e565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b50505050505050505050505050565b6000808080808061079a878901896138b7565b9550955095509550955095506107de8b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f611170565b5050505050505050505050565b61083f87876107ff36899003890189613998565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611170915050565b50505050505050565b600061089461085a602085018561376e565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061190d92505050565b6108e05760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104a5565b61092a6108f0604085018561376e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119bd92505050565b6109765760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104a5565b6109d961098660208501856139fc565b610993602086018661376e565b6109a0604088018861376e565b6109b060808a0160608b016139fc565b6040516020016109c596959493929190613a26565b604051602081830303815290604052611a60565b9050610a74610a286109ee604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8792505050565b610a32848061376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611a96565b610ae65760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104a5565b610b3184610af7604085018561376e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ad492505050565b9392505050565b6001600160601b031982166000908152601d840160205260409020600181015480610ba55760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104a5565b808335610bb86040860160208701613a68565b610bc86060870160408801613a83565b604051602001610c059392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b6040516020818303038152906040528051906020012014610c685760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6002820154600160c01b900460ff166001816005811115610c8b57610c8b613a9e565b1480610ca857506002816005811115610ca657610ca6613a9e565b145b610d1a5760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104a5565b50509392505050565b600080610d2f84611e43565b9092509050823582148015610d5e575063ffffffff8116610d566040850160208601613a68565b63ffffffff16145b610dd05760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104a5565b60016019860160008535610dea6040880160208901613a68565b604051602001610e1192919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610e7a85611f1e565b90925090506000610e8c836001613816565b6040517f1976a9140000000000000000000000000000000000000000000000000000000060208201526001600160601b03198716602482015261222b60f21b6038820152909150600090603a0160408051601f198184030181529082905280516020918201207f1600140000000000000000000000000000000000000000000000000000000000918301919091526001600160601b0319881660238301529150600090603701604051602081830303815290604052805190602001209050610f76898989604051806080016040528088815260200189815260200187815260200186815250611f35565b9998505050505050505050565b6001600160601b031983166000908152601d8501602052604090206002810154600160c01b900460ff166001816005811115610fc157610fc1613a9e565b1480610fde57506002816005811115610fdc57610fdc613a9e565b145b80610ffa57506005816005811115610ff857610ff8613a9e565b145b61106c5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104a5565b600181600581111561108057611080613a9e565b148061109d5750600281600581111561109b5761109b613a9e565b145b156111445760028601546010870154601188015484546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039094169363d8dc404d93611111936bffffffffffffffffffffffff9091169290913391908b908b90600401613ab4565b600060405180830381600087803b15801561112b57600080fd5b505af115801561113f573d6000803e3d6000fd5b505050505b600181600581111561115857611158613a9e565b141561116857611168868661212f565b505050505050565b6001600160601b031986166000908152601d88016020526040902060016002820154600160c01b900460ff1660058111156111ad576111ad613a9e565b146111fa5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104a5565b6001810154806112565760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104a5565b808760000151886020015189604001516040516020016112a39392919092835260e09190911b6001600160e01b031916602083015260c01b6001600160c01b0319166024820152602c0190565b60405160208183030381529060405280519060200120146113065760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104a5565b6000611336600060c01b86604051602001611322929190613b66565b604051602081830303815290604052612279565b905060008151116113af5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104a5565b8080519060200120896040516020016113d891906001600160601b031991909116815260140190565b6040516020818303038152906040528051906020012014156114625760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104a5565b600e8a01546001600160401b0390811690851610156114c35760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104a5565b600089866040516020016114d8929190613b96565b60408051808303601f190181529181528151602092830120600081815260128f01909352912060010154909150600160801b900463ffffffff16156115ab5760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104a5565b600e8b01546000906801000000000000000090046001600160401b03166115d35760006115f7565b600e8c01546115f7906801000000000000000090046001600160401b031687613be1565b600e8d0154909150600160801b90046001600160401b031661161982886137ca565b6002870180546000906116369084906001600160401b0316613c07565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156116d75760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104a5565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601201600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a868660405161186a9493929190613c32565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b1580156118e657600080fd5b505af11580156118fa573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061191b84611f1e565b909250905080158061192e575060001982145b1561193d575060009392505050565b600061194a836001613816565b905060005b828110156119b0578551821061196b5750600095945050505050565b60006119778784612517565b9050600019811415611990575060009695505050505050565b61199a8184613816565b92505080806119a890613c81565b91505061194f565b5093519093149392505050565b60008060006119cb84611f1e565b90925090508015806119de575060001982145b156119ed575060009392505050565b60006119fa836001613816565b905060005b828110156119b05785518210611a1b5750600095945050505050565b6000611a27878461256b565b9050600019811415611a40575060009695505050505050565b611a4a8184613816565b9250508080611a5890613c81565b9150506119ff565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b60448101516000905b92915050565b60008385148015611aa5575081155b8015611ab057508251155b15611abd57506001611acc565b611ac9858486856125d1565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b3957600080fd5b505afa158015611b4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b719190613c9c565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611bae57600080fd5b505afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190613c9c565b9050600080611bfc611bf787612679565b61270e565b905083811415611c0e57839150611c8c565b82811415611c1e57829150611c8c565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104a5565b6000611c9787612736565b9050600019811415611d115760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b600119811415611d635760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104a5565b600219811415611db55760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104a5565b6003880154611dc49084613cb5565b811015611e395760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104a5565b5050505050505050565b6000806000611e5184611f1e565b91505080600114611eca5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104a5565b6000611ed6858261293d565b9050611ee181612b23565b9350611f15611eef82612b30565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f2c836000612b3d565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b83602001518110156120b2578351600090611f7790889061256b565b8551909150600090611f8b90899084612cb9565b90506000611f9882612d83565b90506000611fb66008808551611fae9190613cd4565b859190612cb9565b905086606001516001600160401b03166000148015611ff157506040880151815160208301201480611ff15750606088015181516020830120145b801561200657506000826001600160401b0316115b1561202b5763ffffffff851660408801526001600160401b0382166060880152612083565b60008061203a8d8c8587612df9565b9150915081896000018181516120509190613c07565b6001600160401b0316905250602089018051829190612070908390613c07565b6001600160401b03169052506001975050505b83886000018181516120959190613816565b9052508493506120aa9250839150613c819050565b915050611f5b565b50806121265760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104a5565b50949350505050565b6001600160601b031981166000908152601d83016020526040902060018101546121625761215d838361317d565b6121f9565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516001600160601b0319841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601b83015460601b6001600160601b0319908116908316141561223657601b8301805473ffffffffffffffffffffffffffffffffffffffff191690555b601b83018054600160a01b900463ffffffff1690601461225583613ceb565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b606060008260088151811061229057612290613d0b565b0160200151835160f89190911c91506122aa826009613d21565b60ff16146122c8575050604080516020810190915260008152919050565b826009815181106122db576122db613d0b565b016020015160f81c6123795760028160ff161015612309575050604080516020810190915260008152919050565b600083600a8151811061231e5761231e613d0b565b016020015160f81c9050612333600283613d46565b60ff1681141580612351575080602014158015612351575080601414155b1561236d57505060408051602081019091526000815292915050565b611acc84600b83612cb9565b600061238684600861321d565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156124635783600b815181106123e5576123e5613d0b565b60209101015160f81c601414158061243a5750612410600285516124099190613cd4565b859061321d565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191661222b60f21b14155b1561245657505060408051602081019091526000815292915050565b611acc84600c6014612cb9565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125005783600185516124bc9190613cd4565b815181106124cc576124cc613d0b565b60209101015160f81c6087146124f357505060408051602081019091526000815292915050565b611acc84600b6014612cb9565b505050604080516020810190915260008152919050565b6000806000612526858561322c565b90925090506000198214156125415760001992505050611a90565b8061254d836025613816565b6125579190613816565b612562906004613816565b95945050505050565b6000612578826009613816565b835110156125895750600019611a90565b6000806125a08561259b866008613816565b612b3d565b90925090506000198214156125bb5760001992505050611a90565b806125c7836009613816565b6125629190613816565b6000602084516125e19190613d69565b156125ee57506000611acc565b83516125fc57506000611acc565b818560005b865181101561266c57612615600284613d69565b6001141561263a5761263361262d8883016020015190565b8361326e565b9150612653565b6126508261264b8984016020015190565b61326e565b91505b60019290921c91612665602082613816565b9050612601565b5090931495945050505050565b60008061268783604861321d565b60e81c9050600083604b815181106126a1576126a1613d0b565b016020015160f81c905060006126d583600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff16905060006126e9600384613d46565b60ff1690506126fa81610100613e61565b6127049083613cb5565b9695505050505050565b6000611a907bffff00000000000000000000000000000000000000000000000000008361327a565b6000605082516127469190613d69565b156127545750600019919050565b506040805160808101909152605081526000908190815b84518110156129355761277f858383613286565b801561279f5761278f828461331b565b61279f5750600119949350505050565b60006127aa83612679565b90506127b583611a60565b9350806128f98560008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b111561290c575060021995945050505050565b61291f6129188261270e565b8690613344565b945061292e9050605082613816565b905061276b565b505050919050565b606060008061294b85611f1e565b90925090506000198214156129c85760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104a5565b808410612a175760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104a5565b600080612a25846001613816565b905060005b86811015612aae57612a3c8883612517565b9250600019831415612a905760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612a9a8383613816565b915080612aa681613c81565b915050612a2a565b50612ab98782612517565b9150600019821415612b0d5760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104a5565b612b18878284612cb9565b979650505050505050565b6020810151600090611a90565b6000611a9082602061321d565b6000806000612b4c85856133a2565b905060ff8116612b7e576000858581518110612b6a57612b6a613d0b565b016020015190935060f81c9150612cb29050565b83612b8a826001613d21565b60ff16612b979190613816565b85511015612bae5760001960009250925050612cb2565b60008160ff1660021415612bf357612be8612bd4612bcd876001613816565b889061321d565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612ca8565b8160ff1660041415612c1d57612c10611eef612bcd876001613816565b63ffffffff169050612ca8565b8160ff1660081415612ca857612c9c612c3a612bcd876001613816565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b606081612cd55750604080516020810190915260008152610b31565b6000612ce18385613816565b90508381118015612cf3575080855110155b612d3f5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b604051915082604083010160405282825283850182038460208701018481015b80821015612d7857815183830152602082019150612d5f565b505050509392505050565b600080612d8f8361342e565b60c01c90506000611acc8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008060008585604051602001612e11929190613b96565b60408051808303601f190181529181528151602092830120600081815260128b01909352912060010154909150600160801b900463ffffffff1615612fc8576000818152601288016020526040812060018101548154919291612e87916001600160401b0390811691600160a01b9004166137ca565b60018301549091506001600160401b0380881691612eb3916801000000000000000090910416836137ca565b6001600160401b031611158015612edc5750806001600160401b0316866001600160401b031611155b612f745760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104a5565b600191820154600084815260128b016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905593506001600160401b03169150613173565b600081815260138801602052604090206001810154600160801b900463ffffffff1661305b5760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104a5565b60018101548154600091613083916001600160401b0391821691600160a01b909104166137ca565b60018301549091506001600160401b03808816916130af916801000000000000000090910416836137ca565b6001600160401b0316111580156130d85750806001600160401b0316866001600160401b031611155b6131705760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104a5565b50505b5094509492505050565b6001600160601b031981166000818152601d8401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6000610b318383016020015190565b60008061323a836025613816565b8451101561324f575060001990506000612cb2565b6000806132618661259b876024613816565b9097909650945050505050565b6000610b31838361343a565b6000610b318284613e6d565b815160006132948284613816565b905082811180156132a6575080855110155b6132f25760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104a5565b826020860101602085018382015b80831015611e39578251825260209283019290910190613300565b60008061332784613468565b905082811461333a576000915050611a90565b5060019392505050565b60006133508284613816565b905082811015611a905760405162461bcd60e51b815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e0000000000000060448201526064016104a5565b60008282815181106133b6576133b6613d0b565b60209101015160f81c60ff14156133cf57506008611a90565b8282815181106133e1576133e1613d0b565b60209101015160f81c60fe14156133fa57506004611a90565b82828151811061340c5761340c613d0b565b60209101015160f81c60fd141561342557506002611a90565b50600092915050565b6000611a90828261321d565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6024810151600090611a90565b60006060828403121561348757600080fd5b50919050565b80356001600160601b0319811681146134a557600080fd5b919050565b600080600080600060e086880312156134c257600080fd5b8535945060208601356001600160401b03808211156134e057600080fd5b908701906080828a0312156134f457600080fd5b9094506040870135908082111561350a57600080fd5b5061351788828901613475565b9350506135278760608801613475565b915061353560c0870161348d565b90509295509295909350565b60008083601f84011261355357600080fd5b5081356001600160401b0381111561356a57600080fd5b602083019150836020828501011115612cb257600080fd5b6000806000806000806080878903121561359b57600080fd5b863595506135ab6020880161348d565b945060408701356001600160401b03808211156135c757600080fd5b818901915089601f8301126135db57600080fd5b8135818111156135ea57600080fd5b8a60208260051b85010111156135ff57600080fd5b60208301965080955050606089013591508082111561361d57600080fd5b5061362a89828a01613541565b979a9699509497509295939492505050565b6001600160a01b038116811461365157600080fd5b50565b80356001600160401b03811681146134a557600080fd5b60008060008060006080868803121561368357600080fd5b8535945060208601356136958161363c565b93506136a360408701613654565b925060608601356001600160401b038111156136be57600080fd5b6136ca88828901613541565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136f757600080fd5b873596506137076020890161348d565b95506137168960408a01613475565b945060a08801356137268161363c565b935060c08801356001600160401b0381111561374157600080fd5b61374d8a828b01613541565b9094509250613760905060e08901613654565b905092959891949750929550565b6000808335601e1984360301811261378557600080fd5b8301803591506001600160401b0382111561379f57600080fd5b602001915036819003821315612cb257600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137ea576137ea6137b4565b039392505050565b6001600160601b031984168152818360148301376000910160140190815292915050565b60008219821115613829576138296137b4565b500190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff811681146134a557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156138af576138af613871565b604052919050565b60008060008060008060c087890312156138d057600080fd5b86356138db8161363c565b955060206138ea88820161348d565b9550604088013594506138ff6060890161385d565b935061390d60808901613654565b925060a08801356001600160401b038082111561392957600080fd5b818a0191508a601f83011261393d57600080fd5b81358181111561394f5761394f613871565b613961601f8201601f19168501613887565b91508082528b8482850101111561397757600080fd5b80848401858401376000848284010152508093505050509295509295509295565b6000606082840312156139aa57600080fd5b604051606081018181106001600160401b03821117156139cc576139cc613871565b604052823581526139df6020840161385d565b60208201526139f060408401613654565b60408201529392505050565b600060208284031215613a0e57600080fd5b81356001600160e01b031981168114610b3157600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a7a57600080fd5b610b318261385d565b600060208284031215613a9557600080fd5b610b3182613654565b634e487b7160e01b600052602160045260246000fd5b600060a082016bffffffffffffffffffffffff89168352602088818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b275763ffffffff613b148561385d565b1682529282019290820190600101613afe565b509a9950505050505050505050565b60005b83811015613b51578181015183820152602001613b39565b83811115613b60576000848401525b50505050565b6001600160c01b03198316815260008251613b88816008850160208701613b36565b919091016008019392505050565b6bffffffffffffffffffffffff198316815260008251613bbd816014850160208701613b36565b919091016014019392505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613bfb57613bfb613bcb565b92169190910492915050565b60006001600160401b03808316818516808303821115613c2957613c296137b4565b01949350505050565b6080815260008551806080840152613c518160a0850160208a01613b36565b6001600160401b03958616602084015293851660408301525092166060830152601f01601f19160160a001919050565b6000600019821415613c9557613c956137b4565b5060010190565b600060208284031215613cae57600080fd5b5051919050565b6000816000190483118215151615613ccf57613ccf6137b4565b500290565b600082821015613ce657613ce66137b4565b500390565b600063ffffffff821680613d0157613d016137b4565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613d3e57613d3e6137b4565b019392505050565b600060ff821660ff841680821015613d6057613d606137b4565b90039392505050565b600082613d7857613d78613bcb565b500690565b600181815b80851115613db8578160001904821115613d9e57613d9e6137b4565b80851615613dab57918102915b93841c9390800290613d82565b509250929050565b600082613dcf57506001611a90565b81613ddc57506000611a90565b8160018114613df25760028114613dfc57613e18565b6001915050611a90565b60ff841115613e0d57613e0d6137b4565b50506001821b611a90565b5060208310610133831016604e8410600b8410161715613e3b575081810a611a90565b613e458383613d7d565b8060001904821115613e5957613e596137b4565b029392505050565b6000610b318383613dc0565b600082613e7c57613e7c613bcb565b50049056fea26469706673582212202668442d1c5d34d45b9751658e8b0473b64d2a0e6671aac5ea588032c935ebf164736f6c63430008090033",
|
|
88
|
+
"bytecode": "0x613e3161003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004613498565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613570565b6103be565b8180156100a957600080fd5b5061007b6100b8366004613659565b6107c9565b8180156100c957600080fd5b5061007b6100d83660046136c9565b61082d565b60006100ea86868661088a565b905060006100f9878486610b7a565b90506101488761010c602089018961375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d7b915050565b60006101978861015b60408a018a61375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610ea4915050565b60608101519091506001600160401b0316156102285782816040015182606001516040516020016102069392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b60408051601f1981840301815291905280516020909101206001830155610230565b600060018301555b805160028301805460009061024f9084906001600160401b03166137b8565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102b491815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b5050895460038b015460208501516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b039091166024820152911692506356a6d9ef9150604401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050505050505050565b60006104008684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fed92505050565b6000818152601189016020908152604091829020825160a08101845281546001600160a01b0381168252600160a01b90046001600160401b039081169382019390935260019091015480831693820193909352600160401b83049091166060820152600160801b90910463ffffffff1660808201819052919250906104d65760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b6009880154608082015142916104fd916001600160401b039091169063ffffffff166137e0565b6001600160401b0316106105785760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104cd565b6bffffffffffffffffffffffff198716600090815260158901602090815260409182902091830151908301516105ae91906137b8565b6002820180546000906105cb9084906001600160401b03166137b8565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506106068888888c61100c909392919063ffffffff16565b600083815260128a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117600160401b9190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560118e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516bffffffffffffffffffffffff198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610742908890889061380b565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b1580156107a657600080fd5b505af11580156107ba573d6000803e3d6000fd5b50505050505050505050505050565b600080808080806107dc87890189613894565b9550955095509550955095506108208b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f61120e565b5050505050505050505050565b610881878761084136899003890189613975565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061120e915050565b50505050505050565b60006108d661089c602085018561375c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196d92505050565b6109225760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104cd565b61096c610932604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a1d92505050565b6109b85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104cd565b610a1b6109c860208501856139d9565b6109d5602086018661375c565b6109e2604088018861375c565b6109f260808a0160608b016139d9565b604051602001610a0796959493929190613a03565b604051602081830303815290604052611ac0565b9050610ab6610a6a610a30604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ae792505050565b610a74848061375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611af4565b610b285760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104cd565b610b7384610b39604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b3292505050565b9392505050565b6bffffffffffffffffffffffff19821660009081526015840160205260409020600181015480610bec5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104cd565b808335610bff6040860160208701613a45565b610c0f6060870160408801613a60565b604051602001610c5d9392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b6040516020818303038152906040528051906020012014610cc05760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104cd565b6002820154600160c01b900460ff166001816005811115610ce357610ce3613a7b565b1480610d0057506002816005811115610cfe57610cfe613a7b565b145b610d725760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104cd565b50509392505050565b600080610d8784611eb6565b9092509050823582148015610db6575063ffffffff8116610dae6040850160208601613a45565b63ffffffff16145b610e285760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104cd565b60016014860160008535610e426040880160208901613a45565b604051602001610e6992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610ed285611f91565b90925090506000610ee4836001613a91565b604080517bffffffffffffffffffffffffffffffffffffffff0000000000000000602089811c919091167f1976a914000000000000000000000000000000000000000088ac00000000000017828201528251601a818403018152603a830184528051908201207cffffffffffffffffffffffffffffffffffffffff00000000000000000060188b901c167f160014000000000000000000000000000000000000000000000000000000000017605a84015283516051818503018152607184018086528151919093012060f184019094528482526091830187905260b1830181905260d190920183905292935091610fe0908a908a908a90611fa8565b9998505050505050505050565b8051602080830191909120600090815290839052603490205b92915050565b6bffffffffffffffffffffffff198316600090815260158501602052604090206002810154600160c01b900460ff16600181600581111561104f5761104f613a7b565b148061106c5750600281600581111561106a5761106a613a7b565b145b806110885750600581600581111561108657611086613a7b565b145b6110fa5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104cd565b600181600581111561110e5761110e613a7b565b148061112b5750600281600581111561112957611129613a7b565b145b156111e2576002860154600987015483546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263d8dc404d926111af92600160401b82046bffffffffffffffffffffffff1692600160a01b9092046001600160401b0316913391908b908b90600401613aa9565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b505050505b60018160058111156111f6576111f6613a7b565b14156112065761120686866121a3565b505050505050565b6bffffffffffffffffffffffff1986166000908152601588016020526040902060016002820154600160c01b900460ff16600581111561125057611250613a7b565b1461129d5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104cd565b6001810154806112f95760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104cd565b808760000151886020015189604001516040516020016113579392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b60405160208183030381529060405280519060200120146113ba5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104cd565b60006113d360008651876122fc9092919063ffffffff16565b9050600081511161144c5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104cd565b805160141415806114795750611463816000612600565b6bffffffffffffffffffffffff198a8116911614155b6114eb5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104cd565b60088a01546001600160401b03908116908516101561154c5760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104cd565b60006115588a87610fed565b600081815260118d016020526040902060010154909150600160801b900463ffffffff16156116155760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104cd565b60088b0154600090600160401b90046001600160401b0316611638576000611657565b60088c015461165790600160401b90046001600160401b031687613b4a565b60088d0154909150600160801b90046001600160401b031661167982886137b8565b6002870180546000906116969084906001600160401b03166137e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156117375760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104cd565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601101600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a86866040516118ca9493929190613b70565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061197b84611f91565b909250905080158061198e575060001982145b1561199d575060009392505050565b60006119aa836001613a91565b905060005b82811015611a1057855182106119cb5750600095945050505050565b60006119d7878461260f565b90506000198114156119f0575060009695505050505050565b6119fa8184613a91565b9250508080611a0890613bfb565b9150506119af565b5093519093149392505050565b6000806000611a2b84611f91565b9092509050801580611a3e575060001982145b15611a4d575060009392505050565b6000611a5a836001613a91565b905060005b82811015611a105785518210611a7b5750600095945050505050565b6000611a878784612663565b9050600019811415611aa0575060009695505050505050565b611aaa8184613a91565b9250508080611ab890613bfb565b915050611a5f565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6044810151600090611006565b60008385148015611b03575081155b8015611b0e57508251155b15611b1b57506001611b2a565b611b27858486856126c9565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b9757600080fd5b505afa158015611bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf9190613c16565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c449190613c16565b9050600080611c5a611c5587612771565b61277e565b905083811415611c6c57839150611cea565b82811415611c7c57829150611cea565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104cd565b6000611cf5876127a6565b9050600019811415611d6f5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104cd565b600119811415611dc15760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104cd565b600219811415611e135760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104cd565b6001880154611e3790600160a01b90046bffffffffffffffffffffffff1684613c2f565b811015611eac5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104cd565b5050505050505050565b6000806000611ec484611f91565b91505080600114611f3d5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104cd565b6000611f498582612993565b9050611f5481612b79565b9350611f88611f6282612b86565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f9f836000612b93565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b8360200151811015612126578351600090611fea908890612663565b8551909150600090611ffd908990612d0f565b9050600061200c600884613c4e565b875190915060009061201f906008613a91565b8a81016020018390206060890151919250906001600160401b0316158015612057575088604001518114806120575750886060015181145b801561206c57506000846001600160401b0316115b156120915763ffffffff861660408901526001600160401b03841660608901526120f6565b600081815260208b90526034812081906120ad908f9088612d86565b91509150818a6000018181516120c391906137e0565b6001600160401b031690525060208a0180518291906120e39083906137e0565b6001600160401b03169052506001985050505b84896000018181516121089190613a91565b90525085945061211e9350849250613bfb915050565b915050611fce565b508061219a5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104cd565b50949350505050565b6bffffffffffffffffffffffff1981166000908152601583016020526040902060018101546121db576121d683836130cf565b612277565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b600c83015460601b6bffffffffffffffffffffffff1990811690831614156122b957600c8301805473ffffffffffffffffffffffffffffffffffffffff191690555b600c83018054600160a01b900463ffffffff169060146122d883613c65565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6060600084848151811061231257612312613c85565b016020015160f81c905082612328826001613c9b565b60ff1614612346575050604080516020810190915260008152610b73565b84612352856001613a91565b8151811061236257612362613c85565b016020015160f81c61241e5760028160ff161015612390575050604080516020810190915260008152610b73565b60008561239e866002613a91565b815181106123ae576123ae613c85565b016020015160f81c90506123c3600283613cc0565b60ff16811415806123e15750806020141580156123e1575080601414155b156123ff576040518060200160405280600081525092505050610b73565b61241561240d866003613a91565b879083613174565b92505050610b73565b600061242a8686612600565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008216141561253f5785612482866003613a91565b8151811061249257612492613c85565b60209101015160f81c601414158061250a57506124c560026124b48688613a91565b6124be9190613c4e565b8790612600565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612528576040518060200160405280600081525092505050610b73565b612415612536866004613a91565b87906014613174565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125e7578560016125968688613a91565b6125a09190613c4e565b815181106125b0576125b0613c85565b60209101015160f81c6087146125d9576040518060200160405280600081525092505050610b73565b612415612536866003613a91565b5050506040805160208101909152600081529392505050565b6000610b738383016020015190565b600080600061261e858561323e565b90925090506000198214156126395760001992505050611006565b80612645836025613a91565b61264f9190613a91565b61265a906004613a91565b95945050505050565b6000612670826009613a91565b835110156126815750600019611006565b60008061269885612693866008613a91565b612b93565b90925090506000198214156126b35760001992505050611006565b806126bf836009613a91565b61265a9190613a91565b6000602084516126d99190613ce3565b156126e657506000611b2a565b83516126f457506000611b2a565b818560005b86518110156127645761270d600284613ce3565b600114156127325761272b6127258883016020015190565b83613280565b915061274b565b612748826127438984016020015190565b613280565b91505b60019290921c9161275d602082613a91565b90506126f9565b5090931495945050505050565b600061100682600061328c565b60006110067bffff00000000000000000000000000000000000000000000000000008361332a565b6000605082516127b69190613ce3565b156127c45750600019919050565b50600080805b835181101561298c5780156127f3576127e4848284613336565b6127f357506001199392505050565b60006127ff858361328c565b905061280d85836050613361565b9250806129518460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b11156129635750600219949350505050565b61296c8161277e565b6129769085613a91565b93506129859050605082613a91565b90506127ca565b5050919050565b60606000806129a185611f91565b9092509050600019821415612a1e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104cd565b808410612a6d5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104cd565b600080612a7b846001613a91565b905060005b86811015612b0457612a92888361260f565b9250600019831415612ae65760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104cd565b612af08383613a91565b915080612afc81613bfb565b915050612a80565b50612b0f878261260f565b9150600019821415612b635760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104cd565b612b6e878284613174565b979650505050505050565b6020810151600090611006565b6000611006826020612600565b6000806000612ba2858561338b565b905060ff8116612bd4576000858581518110612bc057612bc0613c85565b016020015190935060f81c9150612d089050565b83612be0826001613c9b565b60ff16612bed9190613a91565b85511015612c045760001960009250925050612d08565b60008160ff1660021415612c4957612c3e612c2a612c23876001613a91565b8890612600565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612cfe565b8160ff1660041415612c7357612c66611f62612c23876001613a91565b63ffffffff169050612cfe565b8160ff1660081415612cfe57612cf2612c90612c23876001613a91565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600080612d1c8484612600565b60c01c9050600061265a8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008281526011840160205260408120600101548190600160801b900463ffffffff1615612f21576000848152601186016020526040812060018101548154919291612de5916001600160401b0390811691600160a01b9004166137b8565b60018301549091506001600160401b0380871691612e0c91600160401b90910416836137b8565b6001600160401b031611158015612e355750806001600160401b0316856001600160401b031611155b612ecd5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104cd565b6001918201546000878152601189016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905592506001600160401b031690506130c7565b600084815260128601602052604090206001810154600160801b900463ffffffff16612fb45760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104cd565b60018101548154600091612fdc916001600160401b0391821691600160a01b909104166137b8565b60018301549091506001600160401b038087169161300391600160401b90910416836137b8565b6001600160401b03161115801561302c5750806001600160401b0316856001600160401b031611155b6130c45760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104cd565b50505b935093915050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6060816131905750604080516020810190915260008152610b73565b600061319c8385613a91565b905083811180156131ae575080855110155b6131fa5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104cd565b604051915082604083010160405282825283850182038460208701018481015b808210156132335781518383015260208201915061321a565b505050509392505050565b60008061324c836025613a91565b84511015613261575060001990506000612d08565b60008061327386612693876024613a91565b9097909650945050505050565b6000610b738383613417565b6000806132a461329d846048613a91565b8590612600565b60e81c90506000846132b785604b613a91565b815181106132c7576132c7613c85565b016020015160f81c905060006132fb83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff169050600061330f600384613cc0565b60ff16905061332081610100613ddb565b612b6e9083613c2f565b6000610b738284613de7565b6000806133438585613445565b9050828114613356576000915050610b73565b506001949350505050565b6000602060008385602001870160025afa50602060006020600060025afa50506000519392505050565b600082828151811061339f5761339f613c85565b60209101015160f81c60ff14156133b857506008611006565b8282815181106133ca576133ca613c85565b60209101015160f81c60fe14156133e357506004611006565b8282815181106133f5576133f5613c85565b60209101015160f81c60fd141561340e57506002611006565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000610b73613455836004613a91565b84016020015190565b60006060828403121561347057600080fd5b50919050565b80356bffffffffffffffffffffffff198116811461349357600080fd5b919050565b600080600080600060e086880312156134b057600080fd5b8535945060208601356001600160401b03808211156134ce57600080fd5b908701906080828a0312156134e257600080fd5b909450604087013590808211156134f857600080fd5b506135058882890161345e565b935050613515876060880161345e565b915061352360c08701613476565b90509295509295909350565b60008083601f84011261354157600080fd5b5081356001600160401b0381111561355857600080fd5b602083019150836020828501011115612d0857600080fd5b6000806000806000806080878903121561358957600080fd5b8635955061359960208801613476565b945060408701356001600160401b03808211156135b557600080fd5b818901915089601f8301126135c957600080fd5b8135818111156135d857600080fd5b8a60208260051b85010111156135ed57600080fd5b60208301965080955050606089013591508082111561360b57600080fd5b5061361889828a0161352f565b979a9699509497509295939492505050565b6001600160a01b038116811461363f57600080fd5b50565b80356001600160401b038116811461349357600080fd5b60008060008060006080868803121561367157600080fd5b8535945060208601356136838161362a565b935061369160408701613642565b925060608601356001600160401b038111156136ac57600080fd5b6136b88882890161352f565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136e557600080fd5b873596506136f560208901613476565b95506137048960408a0161345e565b945060a08801356137148161362a565b935060c08801356001600160401b0381111561372f57600080fd5b61373b8a828b0161352f565b909450925061374e905060e08901613642565b905092959891949750929550565b6000808335601e1984360301811261377357600080fd5b8301803591506001600160401b0382111561378d57600080fd5b602001915036819003821315612d0857600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137d8576137d86137a2565b039392505050565b60006001600160401b03808316818516808303821115613802576138026137a2565b01949350505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff8116811461349357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561388c5761388c61384e565b604052919050565b60008060008060008060c087890312156138ad57600080fd5b86356138b88161362a565b955060206138c7888201613476565b9550604088013594506138dc6060890161383a565b93506138ea60808901613642565b925060a08801356001600160401b038082111561390657600080fd5b818a0191508a601f83011261391a57600080fd5b81358181111561392c5761392c61384e565b61393e601f8201601f19168501613864565b91508082528b8482850101111561395457600080fd5b80848401858401376000848284010152508093505050509295509295509295565b60006060828403121561398757600080fd5b604051606081018181106001600160401b03821117156139a9576139a961384e565b604052823581526139bc6020840161383a565b60208201526139cd60408401613642565b60408201529392505050565b6000602082840312156139eb57600080fd5b81356001600160e01b031981168114610b7357600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a5757600080fd5b610b738261383a565b600060208284031215613a7257600080fd5b610b7382613642565b634e487b7160e01b600052602160045260246000fd5b60008219821115613aa457613aa46137a2565b500190565b600060a082016bffffffffffffffffffffffff8916835260206001600160401b038916818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b255763ffffffff613b128561383a565b1682529282019290820190600101613afc565b509a9950505050505050505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613b6457613b64613b34565b92169190910492915050565b608081526000855180608084015260005b81811015613b9e57602081890181015160a0868401015201613b81565b81811115613bb057600060a083860101525b50601f01601f1916820160a0019050613bd460208301866001600160401b03169052565b6001600160401b03841660408301526001600160401b038316606083015295945050505050565b6000600019821415613c0f57613c0f6137a2565b5060010190565b600060208284031215613c2857600080fd5b5051919050565b6000816000190483118215151615613c4957613c496137a2565b500290565b600082821015613c6057613c606137a2565b500390565b600063ffffffff821680613c7b57613c7b6137a2565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613cb857613cb86137a2565b019392505050565b600060ff821660ff841680821015613cda57613cda6137a2565b90039392505050565b600082613cf257613cf2613b34565b500690565b600181815b80851115613d32578160001904821115613d1857613d186137a2565b80851615613d2557918102915b93841c9390800290613cfc565b509250929050565b600082613d4957506001611006565b81613d5657506000611006565b8160018114613d6c5760028114613d7657613d92565b6001915050611006565b60ff841115613d8757613d876137a2565b50506001821b611006565b5060208310610133831016604e8410600b8410161715613db5575081810a611006565b613dbf8383613cf7565b8060001904821115613dd357613dd36137a2565b029392505050565b6000610b738383613d3a565b600082613df657613df6613b34565b50049056fea26469706673582212201c7f8532ef451155e6832e8ca3f5054c1238743fdc92209813200f0004291c1064736f6c63430008090033",
|
|
89
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c8063a164de6e1461005b578063a76558b31461007d578063d25398081461009d578063f5ada442146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004613498565b6100dd565b005b81801561008957600080fd5b5061007b610098366004613570565b6103be565b8180156100a957600080fd5b5061007b6100b8366004613659565b6107c9565b8180156100c957600080fd5b5061007b6100d83660046136c9565b61082d565b60006100ea86868661088a565b905060006100f9878486610b7a565b90506101488761010c602089018961375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610d7b915050565b60006101978861015b60408a018a61375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250610ea4915050565b60608101519091506001600160401b0316156102285782816040015182606001516040516020016102069392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b60408051601f1981840301815291905280516020909101206001830155610230565b600060018301555b805160028301805460009061024f9084906001600160401b03166137b8565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550836bffffffffffffffffffffffff19167fa45596c10f758d32ec8cca64a0fbfe776052b08fdb3f026e0a87f52118bf8fbe846040516102b491815260200190565b60405180910390a2875481516040517f392aee430000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201526001600160a01b039091169063392aee4390602401600060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b5050895460038b015460208501516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b039091166024820152911692506356a6d9ef9150604401600060405180830381600087803b15801561039c57600080fd5b505af11580156103b0573d6000803e3d6000fd5b505050505050505050505050565b60006104008684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fed92505050565b6000818152601189016020908152604091829020825160a08101845281546001600160a01b0381168252600160a01b90046001600160401b039081169382019390935260019091015480831693820193909352600160401b83049091166060820152600160801b90910463ffffffff1660808201819052919250906104d65760405162461bcd60e51b815260206004820152602160248201527f526564656d7074696f6e207265717565737420646f6573206e6f7420657869736044820152601d60fa1b60648201526084015b60405180910390fd5b6009880154608082015142916104fd916001600160401b039091169063ffffffff166137e0565b6001600160401b0316106105785760405162461bcd60e51b8152602060048201526024808201527f526564656d7074696f6e207265717565737420686173206e6f742074696d656460448201527f206f75740000000000000000000000000000000000000000000000000000000060648201526084016104cd565b6bffffffffffffffffffffffff198716600090815260158901602090815260409182902091830151908301516105ae91906137b8565b6002820180546000906105cb9084906001600160401b03166137b8565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506106068888888c61100c909392919063ffffffff16565b600083815260128a016020908152604080832085518154878501516001600160a01b039092166001600160e01b031991821617600160a01b6001600160401b0393841602178355878401516001938401805460608b015160808c01519386167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117600160401b9190951602939093177fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff16600160801b63ffffffff909216919091021790915560118e0190935292819020805490921682559101805473ffffffffffffffffffffffffffffffffffffffff19169055516bffffffffffffffffffffffff198916907f013dddc8debc4730cd01232fdcea9ae6013689837732356c187fe5edb9a8a8d590610742908890889061380b565b60405180910390a28854825160208401516040516356a6d9ef60e01b81526001600160a01b0392831660048201526001600160401b0390911660248201529116906356a6d9ef90604401600060405180830381600087803b1580156107a657600080fd5b505af11580156107ba573d6000803e3d6000fd5b50505050505050505050505050565b600080808080806107dc87890189613894565b9550955095509550955095506108208b8660405180606001604052808881526020018763ffffffff168152602001866001600160401b03168152508d8a868f61120e565b5050505050505050505050565b610881878761084136899003890189613975565b878888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061120e915050565b50505050505050565b60006108d661089c602085018561375c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061196d92505050565b6109225760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420696e70757420766563746f722070726f766964656400000060448201526064016104cd565b61096c610932604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a1d92505050565b6109b85760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206f757470757420766563746f722070726f7669646564000060448201526064016104cd565b610a1b6109c860208501856139d9565b6109d5602086018661375c565b6109e2604088018861375c565b6109f260808a0160608b016139d9565b604051602001610a0796959493929190613a03565b604051602081830303815290604052611ac0565b9050610ab6610a6a610a30604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ae792505050565b610a74848061375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869493925050506020860135611af4565b610b285760405162461bcd60e51b815260206004820152603c60248201527f5478206d65726b6c652070726f6f66206973206e6f742076616c696420666f7260448201527f2070726f76696465642068656164657220616e6420747820686173680000000060648201526084016104cd565b610b7384610b39604085018561375c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b3292505050565b9392505050565b6bffffffffffffffffffffffff19821660009081526015840160205260409020600181015480610bec5760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d61696e205554584f20666f7220676976656e2077616c6c657400000060448201526064016104cd565b808335610bff6040860160208701613a45565b610c0f6060870160408801613a60565b604051602001610c5d9392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b6040516020818303038152906040528051906020012014610cc05760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104cd565b6002820154600160c01b900460ff166001816005811115610ce357610ce3613a7b565b1480610d0057506002816005811115610cfe57610cfe613a7b565b145b610d725760405162461bcd60e51b815260206004820152602b60248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e647320737461746500000000000000000000000000000000000000000060648201526084016104cd565b50509392505050565b600080610d8784611eb6565b9092509050823582148015610db6575063ffffffff8116610dae6040850160208601613a45565b63ffffffff16145b610e285760405162461bcd60e51b815260206004820152603f60248201527f4f7574626f756e64207472616e73616374696f6e20696e707574206d7573742060448201527f706f696e7420746f207468652077616c6c65742773206d61696e205554584f0060648201526084016104cd565b60016014860160008535610e426040880160208901613a45565b604051602001610e6992919091825260e01b6001600160e01b031916602082015260240190565b60408051808303601f19018152918152815160209283012083529082019290925201600020805460ff19169115159190911790555050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080610ed285611f91565b90925090506000610ee4836001613a91565b604080517bffffffffffffffffffffffffffffffffffffffff0000000000000000602089811c919091167f1976a914000000000000000000000000000000000000000088ac00000000000017828201528251601a818403018152603a830184528051908201207cffffffffffffffffffffffffffffffffffffffff00000000000000000060188b901c167f160014000000000000000000000000000000000000000000000000000000000017605a84015283516051818503018152607184018086528151919093012060f184019094528482526091830187905260b1830181905260d190920183905292935091610fe0908a908a908a90611fa8565b9998505050505050505050565b8051602080830191909120600090815290839052603490205b92915050565b6bffffffffffffffffffffffff198316600090815260158501602052604090206002810154600160c01b900460ff16600181600581111561104f5761104f613a7b565b148061106c5750600281600581111561106a5761106a613a7b565b145b806110885750600581600581111561108657611086613a7b565b145b6110fa5760405162461bcd60e51b815260206004820152603960248201527f57616c6c6574206d75737420626520696e204c697665206f72204d6f76696e6760448201527f46756e6473206f72205465726d696e617465642073746174650000000000000060648201526084016104cd565b600181600581111561110e5761110e613a7b565b148061112b5750600281600581111561112957611129613a7b565b145b156111e2576002860154600987015483546040517fd8dc404d0000000000000000000000000000000000000000000000000000000081526001600160a01b039093169263d8dc404d926111af92600160401b82046bffffffffffffffffffffffff1692600160a01b9092046001600160401b0316913391908b908b90600401613aa9565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b505050505b60018160058111156111f6576111f6613a7b565b14156112065761120686866121a3565b505050505050565b6bffffffffffffffffffffffff1986166000908152601588016020526040902060016002820154600160c01b900460ff16600581111561125057611250613a7b565b1461129d5760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c6976652073746174650000000060448201526064016104cd565b6001810154806112f95760405162461bcd60e51b815260206004820152602160248201527f4e6f206d61696e205554584f20666f722074686520676976656e2077616c6c656044820152601d60fa1b60648201526084016104cd565b808760000151886020015189604001516040516020016113579392919092835260e09190911b6001600160e01b031916602083015260c01b77ffffffffffffffffffffffffffffffffffffffffffffffff19166024820152602c0190565b60405160208183030381529060405280519060200120146113ba5760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964206d61696e205554584f20646174610000000000000000000060448201526064016104cd565b60006113d360008651876122fc9092919063ffffffff16565b9050600081511161144c5760405162461bcd60e51b815260206004820152602e60248201527f52656465656d6572206f757470757420736372697074206d757374206265206160448201527f207374616e64617264207479706500000000000000000000000000000000000060648201526084016104cd565b805160141415806114795750611463816000612600565b6bffffffffffffffffffffffff198a8116911614155b6114eb5760405162461bcd60e51b815260206004820152603760248201527f52656465656d6572206f757470757420736372697074206d757374206e6f742060448201527f706f696e7420746f207468652077616c6c657420504b4800000000000000000060648201526084016104cd565b60088a01546001600160401b03908116908516101561154c5760405162461bcd60e51b815260206004820152601b60248201527f526564656d7074696f6e20616d6f756e7420746f6f20736d616c6c000000000060448201526064016104cd565b60006115588a87610fed565b600081815260118d016020526040902060010154909150600160801b900463ffffffff16156116155760405162461bcd60e51b815260206004820152604a60248201527f546865726520697320612070656e64696e6720726564656d7074696f6e20726560448201527f71756573742066726f6d20746869732077616c6c657420746f2074686520736160648201527f6d65206164647265737300000000000000000000000000000000000000000000608482015260a4016104cd565b60088b0154600090600160401b90046001600160401b0316611638576000611657565b60088c015461165790600160401b90046001600160401b031687613b4a565b60088d0154909150600160801b90046001600160401b031661167982886137b8565b6002870180546000906116969084906001600160401b03166137e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055508560020160009054906101000a90046001600160401b03166001600160401b03168b604001516001600160401b031610156117375760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e742077616c6c65742066756e64730000000000000060448201526064016104cd565b6040518060a001604052808a6001600160a01b03168152602001886001600160401b03168152602001836001600160401b03168152602001826001600160401b031681526020014263ffffffff168152508d601101600085815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160010160106101000a81548163ffffffff021916908363ffffffff160217905550905050886001600160a01b03168c6bffffffffffffffffffffffff19167f97a0199072f487232635d50ab75860891afe0b91c976ed2fc76502c4d82d0d958a8a86866040516118ca9493929190613b70565b60405180910390a38c546040517f7c6db49c0000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301523060248301526001600160401b038a16604483015290911690637c6db49c90606401600060405180830381600087803b15801561194657600080fd5b505af115801561195a573d6000803e3d6000fd5b5050505050505050505050505050505050565b600080600061197b84611f91565b909250905080158061198e575060001982145b1561199d575060009392505050565b60006119aa836001613a91565b905060005b82811015611a1057855182106119cb5750600095945050505050565b60006119d7878461260f565b90506000198114156119f0575060009695505050505050565b6119fa8184613a91565b9250508080611a0890613bfb565b9150506119af565b5093519093149392505050565b6000806000611a2b84611f91565b9092509050801580611a3e575060001982145b15611a4d575060009392505050565b6000611a5a836001613a91565b905060005b82811015611a105785518210611a7b5750600095945050505050565b6000611a878784612663565b9050600019811415611aa0575060009695505050505050565b611aaa8184613a91565b9250508080611ab890613bfb565b915050611a5f565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b6044810151600090611006565b60008385148015611b03575081155b8015611b0e57508251155b15611b1b57506001611b2a565b611b27858486856126c9565b90505b949350505050565b6001820154604080517f113764be00000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691600091839163113764be91600480820192602092909190829003018186803b158015611b9757600080fd5b505afa158015611bab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcf9190613c16565b90506000826001600160a01b0316632b97be246040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0c57600080fd5b505afa158015611c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c449190613c16565b9050600080611c5a611c5587612771565b61277e565b905083811415611c6c57839150611cea565b82811415611c7c57829150611cea565b60405162461bcd60e51b815260206004820152602560248201527f4e6f742061742063757272656e74206f722070726576696f757320646966666960448201527f63756c747900000000000000000000000000000000000000000000000000000060648201526084016104cd565b6000611cf5876127a6565b9050600019811415611d6f5760405162461bcd60e51b815260206004820152602360248201527f496e76616c6964206c656e677468206f6620746865206865616465727320636860448201527f61696e000000000000000000000000000000000000000000000000000000000060648201526084016104cd565b600119811415611dc15760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206865616465727320636861696e000000000000000000000060448201526064016104cd565b600219811415611e135760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420776f726b20696e20612068656164657200000060448201526064016104cd565b6001880154611e3790600160a01b90046bffffffffffffffffffffffff1684613c2f565b811015611eac5760405162461bcd60e51b815260206004820152603360248201527f496e73756666696369656e7420616363756d756c61746564206469666669637560448201527f6c747920696e2068656164657220636861696e0000000000000000000000000060648201526084016104cd565b5050505050505050565b6000806000611ec484611f91565b91505080600114611f3d5760405162461bcd60e51b815260206004820152602d60248201527f4f7574626f756e64207472616e73616374696f6e206d7573742068617665206160448201527f2073696e676c6520696e7075740000000000000000000000000000000000000060648201526084016104cd565b6000611f498582612993565b9050611f5481612b79565b9350611f88611f6282612b86565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b92505050915091565b600080611f9f836000612b93565b91509150915091565b604080516080810182526000808252602082018190529181018290526060810182905290805b8360200151811015612126578351600090611fea908890612663565b8551909150600090611ffd908990612d0f565b9050600061200c600884613c4e565b875190915060009061201f906008613a91565b8a81016020018390206060890151919250906001600160401b0316158015612057575088604001518114806120575750886060015181145b801561206c57506000846001600160401b0316115b156120915763ffffffff861660408901526001600160401b03841660608901526120f6565b600081815260208b90526034812081906120ad908f9088612d86565b91509150818a6000018181516120c391906137e0565b6001600160401b031690525060208a0180518291906120e39083906137e0565b6001600160401b03169052506001985050505b84896000018181516121089190613a91565b90525085945061211e9350849250613bfb915050565b915050611fce565b508061219a5760405162461bcd60e51b815260206004820152603b60248201527f526564656d7074696f6e207472616e73616374696f6e206d7573742070726f6360448201527f657373206174206c65617374206f6e6520726564656d7074696f6e000000000060648201526084016104cd565b50949350505050565b6bffffffffffffffffffffffff1981166000908152601583016020526040902060018101546121db576121d683836130cf565b612277565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b600c83015460601b6bffffffffffffffffffffffff1990811690831614156122b957600c8301805473ffffffffffffffffffffffffffffffffffffffff191690555b600c83018054600160a01b900463ffffffff169060146122d883613c65565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6060600084848151811061231257612312613c85565b016020015160f81c905082612328826001613c9b565b60ff1614612346575050604080516020810190915260008152610b73565b84612352856001613a91565b8151811061236257612362613c85565b016020015160f81c61241e5760028160ff161015612390575050604080516020810190915260008152610b73565b60008561239e866002613a91565b815181106123ae576123ae613c85565b016020015160f81c90506123c3600283613cc0565b60ff16811415806123e15750806020141580156123e1575080601414155b156123ff576040518060200160405280600081525092505050610b73565b61241561240d866003613a91565b879083613174565b92505050610b73565b600061242a8686612600565b90507f1976a900000000000000000000000000000000000000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000008216141561253f5785612482866003613a91565b8151811061249257612492613c85565b60209101015160f81c601414158061250a57506124c560026124b48688613a91565b6124be9190613c4e565b8790612600565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f88ac00000000000000000000000000000000000000000000000000000000000014155b15612528576040518060200160405280600081525092505050610b73565b612415612536866004613a91565b87906014613174565b7f17a91400000000000000000000000000000000000000000000000000000000007fffffff0000000000000000000000000000000000000000000000000000000000821614156125e7578560016125968688613a91565b6125a09190613c4e565b815181106125b0576125b0613c85565b60209101015160f81c6087146125d9576040518060200160405280600081525092505050610b73565b612415612536866003613a91565b5050506040805160208101909152600081529392505050565b6000610b738383016020015190565b600080600061261e858561323e565b90925090506000198214156126395760001992505050611006565b80612645836025613a91565b61264f9190613a91565b61265a906004613a91565b95945050505050565b6000612670826009613a91565b835110156126815750600019611006565b60008061269885612693866008613a91565b612b93565b90925090506000198214156126b35760001992505050611006565b806126bf836009613a91565b61265a9190613a91565b6000602084516126d99190613ce3565b156126e657506000611b2a565b83516126f457506000611b2a565b818560005b86518110156127645761270d600284613ce3565b600114156127325761272b6127258883016020015190565b83613280565b915061274b565b612748826127438984016020015190565b613280565b91505b60019290921c9161275d602082613a91565b90506126f9565b5090931495945050505050565b600061100682600061328c565b60006110067bffff00000000000000000000000000000000000000000000000000008361332a565b6000605082516127b69190613ce3565b156127c45750600019919050565b50600080805b835181101561298c5780156127f3576127e4848284613336565b6127f357506001199392505050565b60006127ff858361328c565b905061280d85836050613361565b9250806129518460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1617905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b604082901c77ffffffffffffffff0000000000000000ffffffffffffffff16179050608081901b608082901c179050919050565b11156129635750600219949350505050565b61296c8161277e565b6129769085613a91565b93506129859050605082613a91565b90506127ca565b5050919050565b60606000806129a185611f91565b9092509050600019821415612a1e5760405162461bcd60e51b815260206004820152602260248201527f52656164206f76657272756e20647572696e6720566172496e7420706172736960448201527f6e6700000000000000000000000000000000000000000000000000000000000060648201526084016104cd565b808410612a6d5760405162461bcd60e51b815260206004820152601060248201527f56696e2072656164206f76657272756e0000000000000000000000000000000060448201526064016104cd565b600080612a7b846001613a91565b905060005b86811015612b0457612a92888361260f565b9250600019831415612ae65760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104cd565b612af08383613a91565b915080612afc81613bfb565b915050612a80565b50612b0f878261260f565b9150600019821415612b635760405162461bcd60e51b815260206004820152601760248201527f42616420566172496e7420696e2073637269707453696700000000000000000060448201526064016104cd565b612b6e878284613174565b979650505050505050565b6020810151600090611006565b6000611006826020612600565b6000806000612ba2858561338b565b905060ff8116612bd4576000858581518110612bc057612bc0613c85565b016020015190935060f81c9150612d089050565b83612be0826001613c9b565b60ff16612bed9190613a91565b85511015612c045760001960009250925050612d08565b60008160ff1660021415612c4957612c3e612c2a612c23876001613a91565b8890612600565b62ffff0060e882901c1660f89190911c1790565b61ffff169050612cfe565b8160ff1660041415612c7357612c66611f62612c23876001613a91565b63ffffffff169050612cfe565b8160ff1660081415612cfe57612cf2612c90612c23876001613a91565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600080612d1c8484612600565b60c01c9050600061265a8264ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b60008281526011840160205260408120600101548190600160801b900463ffffffff1615612f21576000848152601186016020526040812060018101548154919291612de5916001600160401b0390811691600160a01b9004166137b8565b60018301549091506001600160401b0380871691612e0c91600160401b90910416836137b8565b6001600160401b031611158015612e355750806001600160401b0316856001600160401b031611155b612ecd5760405162461bcd60e51b815260206004820152604660248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652070656e64696e67207260648201527f6571756573740000000000000000000000000000000000000000000000000000608482015260a4016104cd565b6001918201546000878152601189016020526040902080546001600160e01b0319168155909201805473ffffffffffffffffffffffffffffffffffffffff1916905592506001600160401b031690506130c7565b600084815260128601602052604090206001810154600160801b900463ffffffff16612fb45760405162461bcd60e51b8152602060048201526024808201527f4f75747075742069732061206e6f6e2d72657175657374656420726564656d7060448201527f74696f6e0000000000000000000000000000000000000000000000000000000060648201526084016104cd565b60018101548154600091612fdc916001600160401b0391821691600160a01b909104166137b8565b60018301549091506001600160401b038087169161300391600160401b90910416836137b8565b6001600160401b03161115801561302c5750806001600160401b0316856001600160401b031611155b6130c45760405162461bcd60e51b815260206004820152604860248201527f4f75747075742076616c7565206973206e6f742077697468696e20746865206160448201527f636365707461626c652072616e6765206f66207468652074696d6564206f757460648201527f2072657175657374000000000000000000000000000000000000000000000000608482015260a4016104cd565b50505b935093915050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216600160801b027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b6060816131905750604080516020810190915260008152610b73565b600061319c8385613a91565b905083811180156131ae575080855110155b6131fa5760405162461bcd60e51b815260206004820152601360248201527f536c696365206f7574206f6620626f756e64730000000000000000000000000060448201526064016104cd565b604051915082604083010160405282825283850182038460208701018481015b808210156132335781518383015260208201915061321a565b505050509392505050565b60008061324c836025613a91565b84511015613261575060001990506000612d08565b60008061327386612693876024613a91565b9097909650945050505050565b6000610b738383613417565b6000806132a461329d846048613a91565b8590612600565b60e81c90506000846132b785604b613a91565b815181106132c7576132c7613c85565b016020015160f81c905060006132fb83600060108262ffffff16901c8261ff001660108462ffffff16901b17179050919050565b62ffffff169050600061330f600384613cc0565b60ff16905061332081610100613ddb565b612b6e9083613c2f565b6000610b738284613de7565b6000806133438585613445565b9050828114613356576000915050610b73565b506001949350505050565b6000602060008385602001870160025afa50602060006020600060025afa50506000519392505050565b600082828151811061339f5761339f613c85565b60209101015160f81c60ff14156133b857506008611006565b8282815181106133ca576133ca613c85565b60209101015160f81c60fe14156133e357506004611006565b8282815181106133f5576133f5613c85565b60209101015160f81c60fd141561340e57506002611006565b50600092915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000610b73613455836004613a91565b84016020015190565b60006060828403121561347057600080fd5b50919050565b80356bffffffffffffffffffffffff198116811461349357600080fd5b919050565b600080600080600060e086880312156134b057600080fd5b8535945060208601356001600160401b03808211156134ce57600080fd5b908701906080828a0312156134e257600080fd5b909450604087013590808211156134f857600080fd5b506135058882890161345e565b935050613515876060880161345e565b915061352360c08701613476565b90509295509295909350565b60008083601f84011261354157600080fd5b5081356001600160401b0381111561355857600080fd5b602083019150836020828501011115612d0857600080fd5b6000806000806000806080878903121561358957600080fd5b8635955061359960208801613476565b945060408701356001600160401b03808211156135b557600080fd5b818901915089601f8301126135c957600080fd5b8135818111156135d857600080fd5b8a60208260051b85010111156135ed57600080fd5b60208301965080955050606089013591508082111561360b57600080fd5b5061361889828a0161352f565b979a9699509497509295939492505050565b6001600160a01b038116811461363f57600080fd5b50565b80356001600160401b038116811461349357600080fd5b60008060008060006080868803121561367157600080fd5b8535945060208601356136838161362a565b935061369160408701613642565b925060608601356001600160401b038111156136ac57600080fd5b6136b88882890161352f565b969995985093965092949392505050565b6000806000806000806000610100888a0312156136e557600080fd5b873596506136f560208901613476565b95506137048960408a0161345e565b945060a08801356137148161362a565b935060c08801356001600160401b0381111561372f57600080fd5b61373b8a828b0161352f565b909450925061374e905060e08901613642565b905092959891949750929550565b6000808335601e1984360301811261377357600080fd5b8301803591506001600160401b0382111561378d57600080fd5b602001915036819003821315612d0857600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03838116908316818110156137d8576137d86137a2565b039392505050565b60006001600160401b03808316818516808303821115613802576138026137a2565b01949350505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b803563ffffffff8116811461349357600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561388c5761388c61384e565b604052919050565b60008060008060008060c087890312156138ad57600080fd5b86356138b88161362a565b955060206138c7888201613476565b9550604088013594506138dc6060890161383a565b93506138ea60808901613642565b925060a08801356001600160401b038082111561390657600080fd5b818a0191508a601f83011261391a57600080fd5b81358181111561392c5761392c61384e565b61393e601f8201601f19168501613864565b91508082528b8482850101111561395457600080fd5b80848401858401376000848284010152508093505050509295509295509295565b60006060828403121561398757600080fd5b604051606081018181106001600160401b03821117156139a9576139a961384e565b604052823581526139bc6020840161383a565b60208201526139cd60408401613642565b60408201529392505050565b6000602082840312156139eb57600080fd5b81356001600160e01b031981168114610b7357600080fd5b60006001600160e01b03198089168352868860048501378683016004810160008152868882375093169390920160048101939093525050600801949350505050565b600060208284031215613a5757600080fd5b610b738261383a565b600060208284031215613a7257600080fd5b610b7382613642565b634e487b7160e01b600052602160045260246000fd5b60008219821115613aa457613aa46137a2565b500190565b600060a082016bffffffffffffffffffffffff8916835260206001600160401b038916818501526001600160a01b038816604085015286606085015260a060808501528185835260c08501905086925060005b86811015613b255763ffffffff613b128561383a565b1682529282019290820190600101613afc565b509a9950505050505050505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680613b6457613b64613b34565b92169190910492915050565b608081526000855180608084015260005b81811015613b9e57602081890181015160a0868401015201613b81565b81811115613bb057600060a083860101525b50601f01601f1916820160a0019050613bd460208301866001600160401b03169052565b6001600160401b03841660408301526001600160401b038316606083015295945050505050565b6000600019821415613c0f57613c0f6137a2565b5060010190565b600060208284031215613c2857600080fd5b5051919050565b6000816000190483118215151615613c4957613c496137a2565b500290565b600082821015613c6057613c606137a2565b500390565b600063ffffffff821680613c7b57613c7b6137a2565b6000190192915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff84168060ff03821115613cb857613cb86137a2565b019392505050565b600060ff821660ff841680821015613cda57613cda6137a2565b90039392505050565b600082613cf257613cf2613b34565b500690565b600181815b80851115613d32578160001904821115613d1857613d186137a2565b80851615613d2557918102915b93841c9390800290613cfc565b509250929050565b600082613d4957506001611006565b81613d5657506000611006565b8160018114613d6c5760028114613d7657613d92565b6001915050611006565b60ff841115613d8757613d876137a2565b50506001821b611006565b5060208310610133831016604e8410600b8410161715613db5575081810a611006565b613dbf8383613cf7565b8060001904821115613dd357613dd36137a2565b029392505050565b6000610b738383613d3a565b600082613df657613df6613b34565b50049056fea26469706673582212201c7f8532ef451155e6832e8ca3f5054c1238743fdc92209813200f0004291c1064736f6c63430008090033",
|
|
90
90
|
"linkReferences": {},
|
|
91
91
|
"deployedLinkReferences": {}
|
|
92
92
|
}
|
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"type": "event"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
|
-
"bytecode": "
|
|
109
|
-
"deployedBytecode": "
|
|
108
|
+
"bytecode": "0x610fbf61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80633af3b1541461005b5780634afbe4c91461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d7b565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610dcc565b610310565b8180156100a957600080fd5b5061007b6100b8366004610dfe565b610535565b8180156100c957600080fd5b5061007b6100d8366004610e2a565b610650565b600c83015460601b6bffffffffffffffffffffffff1990811690831614156101725760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6bffffffffffffffffffffffff1982166000908152601584016020526040902060016002820154600160c01b900460ff1660058111156101b4576101b4610e57565b146102015760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b600b840154600282015460009161024e9163ffffffff7c01000000000000000000000000000000000000000000000000000000009092048216916801000000000000000090910416610e83565b63ffffffff164210159050808061028d5750600b850154600160a01b900467ffffffffffffffff1661028186868661094f565b67ffffffffffffffff16105b6102ff5760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610169565b6103098585610a87565b5050505050565b60028401546001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b600061039061038b8484610be0565b610c8a565b6bffffffffffffffffffffffff198116600090815260158701602052604081209192506002820154600160c01b900460ff1660058111156103d3576103d3610e57565b146104465760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610169565b8481556002810180547fffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000004263ffffffff9081169190910291909117600160c01b17909155600c8701805473ffffffffffffffffffffffffffffffffffffffff1916606085901c17808255600160a01b90049091169060146104d183610eab565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b60028301546001600160a01b031633146105a15760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b60006105b061038b8484610be0565b905060016bffffffffffffffffffffffff1982166000908152601586016020526040902060020154600160c01b900460ff1660058111156105f3576105f3610e57565b146106405760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b61064a8482610a87565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190610ecf565b60038111156106f9576106f9610e57565b1461076c5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610169565b600c82015460601b6bffffffffffffffffffffffff198116156108b757600061079684838561094f565b6bffffffffffffffffffffffff1983166000908152601586016020526040812060020154600b87015492935063ffffffff680100000000000000009091048116926107e2911683610e83565b63ffffffff1642101590508080156108145750600b86015467ffffffffffffffff640100000000909104811690841610155b806108415750600b86015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108b35760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610169565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b50505050505050565b6bffffffffffffffffffffffff19821660009081526015840160205260408120600101548015610a7f5780833561098c6040860160208701610ef7565b61099c6060870160408801610f1d565b604051602001610a099392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a6c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610169565b610a7c6060840160408501610f1d565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260158301602052604090206001810154610abf57610aba8383610cb1565b610b5b565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b600c83015460601b6bffffffffffffffffffffffff199081169083161415610b9d57600c8301805473ffffffffffffffffffffffffffffffffffffffff191690555b600c83018054600160a01b900463ffffffff16906014610bbc83610f47565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b60606000610bef600284610f67565b610c1a57507f0200000000000000000000000000000000000000000000000000000000000000610c3d565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b600060608284031215610d7557600080fd5b50919050565b600080600060a08486031215610d9057600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610db457600080fd5b9150610dc38560408601610d63565b90509250925092565b60008060008060808587031215610de257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215610e1357600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3d57600080fd5b82359150610e4e8460208501610d63565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115610ea257610ea2610e6d565b01949350505050565b600063ffffffff80831681811415610ec557610ec5610e6d565b6001019392505050565b600060208284031215610ee157600080fd5b815160048110610ef057600080fd5b9392505050565b600060208284031215610f0957600080fd5b813563ffffffff81168114610ef057600080fd5b600060208284031215610f2f57600080fd5b813567ffffffffffffffff81168114610ef057600080fd5b600063ffffffff821680610f5d57610f5d610e6d565b6000190192915050565b600082610f8457634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220421d7ce07ed35827383bda2f3801eda856d64e899bb3f279295f04521b1e69fd64736f6c63430008090033",
|
|
109
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80633af3b1541461005b5780634afbe4c91461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d7b565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610dcc565b610310565b8180156100a957600080fd5b5061007b6100b8366004610dfe565b610535565b8180156100c957600080fd5b5061007b6100d8366004610e2a565b610650565b600c83015460601b6bffffffffffffffffffffffff1990811690831614156101725760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c65000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6bffffffffffffffffffffffff1982166000908152601584016020526040902060016002820154600160c01b900460ff1660058111156101b4576101b4610e57565b146102015760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b600b840154600282015460009161024e9163ffffffff7c01000000000000000000000000000000000000000000000000000000009092048216916801000000000000000090910416610e83565b63ffffffff164210159050808061028d5750600b850154600160a01b900467ffffffffffffffff1661028186868661094f565b67ffffffffffffffff16105b6102ff5760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610169565b6103098585610a87565b5050505050565b60028401546001600160a01b0316331461037c5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b600061039061038b8484610be0565b610c8a565b6bffffffffffffffffffffffff198116600090815260158701602052604081209192506002820154600160c01b900460ff1660058111156103d3576103d3610e57565b146104465760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610169565b8481556002810180547fffffffffffffff00ffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000004263ffffffff9081169190910291909117600160c01b17909155600c8701805473ffffffffffffffffffffffffffffffffffffffff1916606085901c17808255600160a01b90049091169060146104d183610eab565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b60028301546001600160a01b031633146105a15760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610169565b60006105b061038b8484610be0565b905060016bffffffffffffffffffffffff1982166000908152601586016020526040902060020154600160c01b900460ff1660058111156105f3576105f3610e57565b146106405760405162461bcd60e51b815260206004820152601c60248201527f57616c6c6574206d75737420626520696e204c697665207374617465000000006044820152606401610169565b61064a8482610a87565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106b057600080fd5b505afa1580156106c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e89190610ecf565b60038111156106f9576106f9610e57565b1461076c5760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610169565b600c82015460601b6bffffffffffffffffffffffff198116156108b757600061079684838561094f565b6bffffffffffffffffffffffff1983166000908152601586016020526040812060020154600b87015492935063ffffffff680100000000000000009091048116926107e2911683610e83565b63ffffffff1642101590508080156108145750600b86015467ffffffffffffffff640100000000909104811690841610155b806108415750600b86015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108b35760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610169565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b50505050505050565b6bffffffffffffffffffffffff19821660009081526015840160205260408120600101548015610a7f5780833561098c6040860160208701610ef7565b61099c6060870160408801610f1d565b604051602001610a099392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610a6c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610169565b610a7c6060840160408501610f1d565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260158301602052604090206001810154610abf57610aba8383610cb1565b610b5b565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffff00ffffffffffffffff00000000ffffffffffffffffffffffff90911617780200000000000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b600c83015460601b6bffffffffffffffffffffffff199081169083161415610b9d57600c8301805473ffffffffffffffffffffffffffffffffffffffff191690555b600c83018054600160a01b900463ffffffff16906014610bbc83610f47565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b60606000610bef600284610f67565b610c1a57507f0200000000000000000000000000000000000000000000000000000000000000610c3d565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff198116600081815260158401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffff00ffffffff00000000ffffffffffffffffffffffffffffffff909116177803000000000000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b600060608284031215610d7557600080fd5b50919050565b600080600060a08486031215610d9057600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610db457600080fd5b9150610dc38560408601610d63565b90509250925092565b60008060008060808587031215610de257600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215610e1357600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3d57600080fd5b82359150610e4e8460208501610d63565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818516808303821115610ea257610ea2610e6d565b01949350505050565b600063ffffffff80831681811415610ec557610ec5610e6d565b6001019392505050565b600060208284031215610ee157600080fd5b815160048110610ef057600080fd5b9392505050565b600060208284031215610f0957600080fd5b813563ffffffff81168114610ef057600080fd5b600060208284031215610f2f57600080fd5b813567ffffffffffffffff81168114610ef057600080fd5b600063ffffffff821680610f5d57610f5d610e6d565b6000190192915050565b600082610f8457634e487b7160e01b600052601260045260246000fd5b50069056fea2646970667358221220421d7ce07ed35827383bda2f3801eda856d64e899bb3f279295f04521b1e69fd64736f6c63430008090033",
|
|
110
110
|
"linkReferences": {},
|
|
111
111
|
"deployedLinkReferences": {}
|
|
112
112
|
}
|
|
@@ -278,49 +278,82 @@ library BitcoinTx {
|
|
|
278
278
|
|
|
279
279
|
pubKeyHash = pubKeyHashBytes.slice20(0);
|
|
280
280
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
//
|
|
286
|
-
//
|
|
287
|
-
// script we slice the output starting from 9th byte until the end.
|
|
288
|
-
bytes32 outputScriptKeccak = keccak256(
|
|
289
|
-
output.slice(8, output.length - 8)
|
|
290
|
-
);
|
|
291
|
-
// Build the expected P2PKH script which has the following byte
|
|
292
|
-
// format: <0x1976a914> <20-byte PKH> <0x88ac>. According to
|
|
293
|
-
// https://en.bitcoin.it/wiki/Script#Opcodes this translates to:
|
|
294
|
-
// - 0x19: Byte length of the entire script
|
|
295
|
-
// - 0x76: OP_DUP
|
|
296
|
-
// - 0xa9: OP_HASH160
|
|
297
|
-
// - 0x14: Byte length of the public key hash
|
|
298
|
-
// - 0x88: OP_EQUALVERIFY
|
|
299
|
-
// - 0xac: OP_CHECKSIG
|
|
300
|
-
// which matches the P2PKH structure as per:
|
|
301
|
-
// https://en.bitcoin.it/wiki/Transaction#Pay-to-PubkeyHash
|
|
302
|
-
bytes32 P2PKHScriptKeccak = keccak256(
|
|
303
|
-
abi.encodePacked(hex"1976a914", pubKeyHash, hex"88ac")
|
|
304
|
-
);
|
|
305
|
-
// Build the expected P2WPKH script which has the following format:
|
|
306
|
-
// <0x160014> <20-byte PKH>. According to
|
|
307
|
-
// https://en.bitcoin.it/wiki/Script#Opcodes this translates to:
|
|
308
|
-
// - 0x16: Byte length of the entire script
|
|
309
|
-
// - 0x00: OP_0
|
|
310
|
-
// - 0x14: Byte length of the public key hash
|
|
311
|
-
// which matches the P2WPKH structure as per:
|
|
312
|
-
// https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#P2WPKH
|
|
313
|
-
bytes32 P2WPKHScriptKeccak = keccak256(
|
|
314
|
-
abi.encodePacked(hex"160014", pubKeyHash)
|
|
315
|
-
);
|
|
316
|
-
// Make sure the actual output script matches either the P2PKH
|
|
317
|
-
// or P2WPKH format.
|
|
281
|
+
uint256 scriptLen = output.length - 8;
|
|
282
|
+
|
|
283
|
+
// The P2PKH script is 26 bytes long.
|
|
284
|
+
// The P2WPKH script is 23 bytes long.
|
|
285
|
+
// A valid script must have one of these lengths,
|
|
286
|
+
// and we can identify the expected script type by the length.
|
|
318
287
|
require(
|
|
319
|
-
|
|
320
|
-
outputScriptKeccak == P2WPKHScriptKeccak,
|
|
288
|
+
scriptLen == 26 || scriptLen == 23,
|
|
321
289
|
"Output must be P2PKH or P2WPKH"
|
|
322
290
|
);
|
|
323
291
|
|
|
292
|
+
if (scriptLen == 26) {
|
|
293
|
+
// Compare to the expected P2PKH script.
|
|
294
|
+
bytes26 script = bytes26(output.slice32(8));
|
|
295
|
+
|
|
296
|
+
require(
|
|
297
|
+
script == makeP2PKHScript(pubKeyHash),
|
|
298
|
+
"Invalid P2PKH script"
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (scriptLen == 23) {
|
|
303
|
+
// Compare to the expected P2WPKH script.
|
|
304
|
+
bytes23 script = bytes23(output.slice32(8));
|
|
305
|
+
|
|
306
|
+
require(
|
|
307
|
+
script == makeP2WPKHScript(pubKeyHash),
|
|
308
|
+
"Invalid P2WPKH script"
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
|
|
324
312
|
return pubKeyHash;
|
|
325
313
|
}
|
|
314
|
+
|
|
315
|
+
/// @notice Build the P2PKH script from the given public key hash.
|
|
316
|
+
/// @param pubKeyHash The 20-byte public key hash.
|
|
317
|
+
/// @return The P2PKH script.
|
|
318
|
+
/// @dev The P2PKH script has the following byte format:
|
|
319
|
+
/// <0x1976a914> <20-byte PKH> <0x88ac>. According to
|
|
320
|
+
/// https://en.bitcoin.it/wiki/Script#Opcodes this translates to:
|
|
321
|
+
/// - 0x19: Byte length of the entire script
|
|
322
|
+
/// - 0x76: OP_DUP
|
|
323
|
+
/// - 0xa9: OP_HASH160
|
|
324
|
+
/// - 0x14: Byte length of the public key hash
|
|
325
|
+
/// - 0x88: OP_EQUALVERIFY
|
|
326
|
+
/// - 0xac: OP_CHECKSIG
|
|
327
|
+
/// which matches the P2PKH structure as per:
|
|
328
|
+
/// https://en.bitcoin.it/wiki/Transaction#Pay-to-PubkeyHash
|
|
329
|
+
function makeP2PKHScript(bytes20 pubKeyHash)
|
|
330
|
+
internal
|
|
331
|
+
pure
|
|
332
|
+
returns (bytes26)
|
|
333
|
+
{
|
|
334
|
+
bytes26 P2PKHScriptMask = hex"1976a914000000000000000000000000000000000000000088ac";
|
|
335
|
+
|
|
336
|
+
return ((bytes26(pubKeyHash) >> 32) | P2PKHScriptMask);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/// @notice Build the P2WPKH script from the given public key hash.
|
|
340
|
+
/// @param pubKeyHash The 20-byte public key hash.
|
|
341
|
+
/// @return The P2WPKH script.
|
|
342
|
+
/// @dev The P2WPKH script has the following format:
|
|
343
|
+
/// <0x160014> <20-byte PKH>. According to
|
|
344
|
+
/// https://en.bitcoin.it/wiki/Script#Opcodes this translates to:
|
|
345
|
+
/// - 0x16: Byte length of the entire script
|
|
346
|
+
/// - 0x00: OP_0
|
|
347
|
+
/// - 0x14: Byte length of the public key hash
|
|
348
|
+
/// which matches the P2WPKH structure as per:
|
|
349
|
+
/// https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#P2WPKH
|
|
350
|
+
function makeP2WPKHScript(bytes20 pubKeyHash)
|
|
351
|
+
internal
|
|
352
|
+
pure
|
|
353
|
+
returns (bytes23)
|
|
354
|
+
{
|
|
355
|
+
bytes23 P2WPKHScriptMask = hex"1600140000000000000000000000000000000000000000";
|
|
356
|
+
|
|
357
|
+
return ((bytes23(pubKeyHash) >> 24) | P2WPKHScriptMask);
|
|
358
|
+
}
|
|
326
359
|
}
|