false
false
0

Contract Address Details This is the testnet address; do not send mainnet coins here!

0xE528355d48F80fEbcF6DA65A08E6a2CF2366290A

Contract Name
ValidatorLicenseContract
Creator
0xb80042–1c51ab at 0x48aa73–031ec5
Balance
0.00 GUN (0.00 USD)
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
28545972
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
ValidatorLicenseContract




Optimization enabled
true
Compiler version
v0.8.9+commit.e5eed63a




Optimization runs
200
EVM Version
default




Verified at
2025-02-28T10:37:18.039025Z

Contract source code

// Sources flattened with hardhat v2.22.17 https://hardhat.org
// SPDX-License-Identifier: MIT
// File openzeppelin-contracts-upgradeable/access/IAccessControlUpgradeable.sol
// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControlUpgradeable {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
/**
* @dev Emitted when `account` is revoked `role`.
*
* `sender` is the account that originated the contract call:
* - if using `revokeRole`, it is the admin role bearer
* - if using `renounceRole`, it is the role bearer (i.e. `account`)
*/
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract ABI

[{"type":"error","name":"ContractsIsPaused","inputs":[]},{"type":"error","name":"IncorrectCaller","inputs":[{"type":"address","name":"caller","internalType":"address"},{"type":"address","name":"correctInvoker","internalType":"address"}]},{"type":"error","name":"IncorrectMode","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256"},{"type":"bool","name":"activeMode","internalType":"bool"}]},{"type":"error","name":"IncorrectRarity","inputs":[{"type":"uint8","name":"rarity","internalType":"uint8"}]},{"type":"error","name":"IncorrectTokenID","inputs":[{"type":"uint256","name":"tokenID","internalType":"uint256"}]},{"type":"error","name":"InvalidRole","inputs":[{"type":"address","name":"caller","internalType":"address"},{"type":"bytes32","name":"role","internalType":"bytes32"}]},{"type":"error","name":"insufficientBalance","inputs":[{"type":"uint256","name":"currentBalance","internalType":"uint256"},{"type":"uint256","name":"minBalance","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"approved","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"operator","internalType":"address","indexed":true},{"type":"bool","name":"approved","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"HackerLicenseActivated","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"HackerLicenseDeactivated","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"HackerLicenseMinted","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true},{"type":"uint8","name":"rarity","internalType":"uint8","indexed":true},{"type":"bool","name":"activeMode","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"tokenId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"PERCENT_DENOMINATOR","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"activate","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"approve","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchActivate","inputs":[{"type":"uint256[]","name":"_tokenIds","internalType":"uint256[]"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchApprove","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256[]","name":"tokenIDs","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"batchDeactivate","inputs":[{"type":"uint256[]","name":"_tokenIds","internalType":"uint256[]"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"bulkTransfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256[]","name":"_tokenIds","internalType":"uint256[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"dataCubeContractAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deactivate","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"uint256","name":"_deadline","internalType":"uint256"},{"type":"bytes","name":"_signature","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deactivateByLicenseStorage","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getApproved","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"getLicenseMode","inputs":[{"type":"uint256","name":"_tokenID","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"getLicenseRarity","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initialize","inputs":[{"type":"address","name":"_platformSettingsContractAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isActive","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isApprovedForAll","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"operator","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"lastMintedTokenID","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"licenseStorageAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"licensesMintedByRarity","inputs":[{"type":"uint8","name":"","internalType":"uint8"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"metadataURL","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"mint","inputs":[{"type":"uint8","name":"_rarity","internalType":"uint8"},{"type":"address","name":"_to","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerOf","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"platformSettingsContractAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"safeTransferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setApprovalForAll","inputs":[{"type":"address","name":"operator","internalType":"address"},{"type":"bool","name":"approved","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDataCubeContractAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLicenseStorageAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMetadataURL","inputs":[{"type":"string","name":"newMetadataURL","internalType":"string"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSignatureVerifierContractAddress","inputs":[{"type":"address","name":"_contractAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"signatureVerifierContractAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"supportsInterface","inputs":[{"type":"bytes4","name":"interfaceId","internalType":"bytes4"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenByIndex","inputs":[{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenOfOwnerByIndex","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"uint256","name":"index","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"tokenURI","inputs":[{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"tokenId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"activeMode","internalType":"bool"},{"type":"bool","name":"guildMode","internalType":"bool"},{"type":"uint8","name":"rarity","internalType":"enum ValidatorLicenseContract.Rarity"}],"name":"validatorLicenses","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint32","name":"","internalType":"uint32"}],"name":"version","inputs":[]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50614092806100206000396000f3fe60806040526004361061025c5760003560e01c80636c8d599011610144578063a22cb465116100b6578063c6a319fa1161007a578063c6a319fa14610726578063c87b56dd14610746578063d28a476114610766578063d7c5246514610786578063e985e9c5146107b8578063fae7cde91461080157600080fd5b8063a22cb46514610686578063a9059cbb146106a6578063b88d4fde146106c6578063c0e36955146106e6578063c4d66de81461070657600080fd5b806386f293fe1161010857806386f293fe146105b457806388776593146105d4578063906aff1b1461062657806395d89b41146106465780639b1075c01461065b5780639e6c29591461067157600080fd5b80636c8d59901461054157806370a0823114610561578063747daec5146105815780637bf75f6c146105a157806382afd23b146103b157600080fd5b80632dcc8c66116101dd5780634f6ccce7116101a15780634f6ccce71461047657806354fd4d50146104965780635686f69e146104b45780635c68408a146104d45780636352211e1461050157806365d5a9d01461052157600080fd5b80632dcc8c66146103e15780632f745c59146103f657806342842e0e14610416578063428e402b1461043657806343b6c21f1461045657600080fd5b8063095ea7b311610224578063095ea7b31461033257806316bfc0191461035257806318160ddd1461037257806323b872dd146103915780632776a4f7146103b157600080fd5b806301ffc9a714610261578063065465671461029657806306fdde03146102b8578063081812fc146102da578063083a301614610312575b600080fd5b34801561026d57600080fd5b5061028161027c3660046137c9565b610821565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b506102b66102b1366004613802565b61084c565b005b3480156102c457600080fd5b506102cd610b17565b60405161028d9190613875565b3480156102e657600080fd5b506102fa6102f5366004613888565b610ba9565b6040516001600160a01b03909116815260200161028d565b34801561031e57600080fd5b506102b661032d366004613958565b610c31565b34801561033e57600080fd5b506102b661034d3660046139a8565b610d49565b34801561035e57600080fd5b506102b661036d366004613a52565b610e5a565b34801561037e57600080fd5b506099545b60405190815260200161028d565b34801561039d57600080fd5b506102b66103ac366004613ab5565b610fa8565b3480156103bd57600080fd5b506102816103cc366004613888565b600090815260cc602052604090205460ff1690565b3480156103ed57600080fd5b506102cd610fd9565b34801561040257600080fd5b506103836104113660046139a8565b611067565b34801561042257600080fd5b506102b6610431366004613ab5565b6110fd565b34801561044257600080fd5b506102b6610451366004613802565b611118565b34801561046257600080fd5b506102b6610471366004613a52565b61137c565b34801561048257600080fd5b50610383610491366004613888565b6114c4565b3480156104a257600080fd5b50604051621e8873815260200161028d565b3480156104c057600080fd5b5060ce546102fa906001600160a01b031681565b3480156104e057600080fd5b506103836104ef366004613b02565b60cd6020526000908152604090205481565b34801561050d57600080fd5b506102fa61051c366004613888565b611557565b34801561052d57600080fd5b506102b661053c366004613b1d565b6115ce565b34801561054d57600080fd5b5060cb546102fa906001600160a01b031681565b34801561056d57600080fd5b5061038361057c366004613802565b61160d565b34801561058d57600080fd5b506102b661059c366004613b6b565b611694565b6102b66105af366004613bdd565b6118e2565b3480156105c057600080fd5b5060cf546102fa906001600160a01b031681565b3480156105e057600080fd5b506106176105ef366004613888565b60cc6020526000908152604090205460ff808216916101008104821691620100009091041683565b60405161028d93929190613c26565b34801561063257600080fd5b506102b6610641366004613888565b611caa565b34801561065257600080fd5b506102cd611d9a565b34801561066757600080fd5b5061038360c95481565b34801561067d57600080fd5b50610383606481565b34801561069257600080fd5b506102b66106a1366004613c71565b611da9565b3480156106b257600080fd5b506102b66106c13660046139a8565b611db8565b3480156106d257600080fd5b506102b66106e1366004613ca8565b611e72565b3480156106f257600080fd5b506102b6610701366004613802565b611ea4565b34801561071257600080fd5b506102b6610721366004613802565b612108565b34801561073257600080fd5b5060ca546102fa906001600160a01b031681565b34801561075257600080fd5b506102cd610761366004613888565b6121dc565b34801561077257600080fd5b506102b6610781366004613b1d565b6122a7565b34801561079257600080fd5b506107a66107a1366004613888565b6123af565b60405160ff909116815260200161028d565b3480156107c457600080fd5b506102816107d3366004613d10565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561080d57600080fd5b506102b661081c366004613958565b6123d8565b60006001600160e01b0319821663780e9d6360e01b14806108465750610846826124eb565b92915050565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561090e57600080fd5b505afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190613d45565b80610a46575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561099957600080fd5b505afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d19190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a469190613d45565b610af55760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190613d2c565b6040516316b4d34b60e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0392909216919091179055565b606060658054610b2690613d62565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5290613d62565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b5050505050905090565b6000610bb48261253b565b610c155760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aec565b506000908152606960205260409020546001600160a01b031690565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190613d45565b15610cd55760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163041d180b60e11b81526001600160a01b039091169063083a301690610d0990869086908690600401613d9d565b600060405180830381600087803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b50505050610d4483612558565b505050565b6000610d5482611557565b9050806001600160a01b0316836001600160a01b03161415610dc25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610aec565b336001600160a01b0382161480610dde5750610dde81336107d3565b610e505760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610aec565b610d448383612934565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea857600080fd5b505afa158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190613d45565b15610efe5760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516316bfc01960e01b81526001600160a01b03909116906316bfc01990610f3290869086908690600401613dc5565b600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b5050505060005b8351811015610fa257610f92848281518110610f8557610f85613e18565b60200260200101516129a2565b610f9b81613e44565b9050610f67565b50505050565b610fb23382612b40565b610fce5760405162461bcd60e51b8152600401610aec90613e5f565b610d44838383612c2a565b60d08054610fe690613d62565b80601f016020809104026020016040519081016040528092919081815260200182805461101290613d62565b801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b505050505081565b60006110728361160d565b82106110d45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610aec565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b610d4483838360405180602001604052806000815250611e72565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d9190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190613d45565b80611312575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561126557600080fd5b505afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156112da57600080fd5b505afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190613d45565b61135a5760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ca57600080fd5b505afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613d45565b156114205760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516343b6c21f60e01b81526001600160a01b03909116906343b6c21f9061145490869086908690600401613dc5565b600060405180830381600087803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b5050505060005b8351811015610fa2576114b48482815181106114a7576114a7613e18565b6020026020010151612558565b6114bd81613e44565b9050611489565b60006114cf60995490565b82106115325760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610aec565b6099828154811061154557611545613e18565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806108465760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610aec565b60005b8151811015610d44576115fd838383815181106115f0576115f0613e18565b6020026020010151610d49565b61160681613e44565b90506115d1565b60006001600160a01b0382166116785760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610aec565b506001600160a01b031660009081526068602052604090205490565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b1580156116e157600080fd5b505afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561175657600080fd5b505afa15801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e9190613d45565b8061188e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156117e157600080fd5b505afa1580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561185657600080fd5b505afa15801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e9190613d45565b6118d65760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b610d4460d083836136a6565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561192f57600080fd5b505afa158015611943573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119679190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc9190613d45565b80611adc575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611a2f57600080fd5b505afa158015611a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a679190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611aa457600080fd5b505afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc9190613d45565b611b245760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60048260ff161115611b4e5760405163263c4b5b60e01b815260ff83166004820152602401610aec565b600060c960008154611b5f90613e44565b91829055509050611b708282612dd5565b600081815260cc60205260409020805461ffff1916905560ff83166004811115611b9c57611b9c613c10565b600082815260cc60205260409020805462ff0000191662010000836004811115611bc857611bc8613c10565b021790555060cb546040516322c3164560e01b81526004810183905260ff851660248201526001600160a01b03909116906322c316459034906044016000604051808303818588803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b50505060ff8516600090815260cd60205260408120805493509150611c5583613e44565b91905055508260ff1681836001600160a01b03167ffa6892d2750f4db8fd8db154b0b304f0c078beac81f4a7f11ee8a8ee49f5be586000604051611c9d911515815260200190565b60405180910390a4505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cf857600080fd5b505afa158015611d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d309190613d45565b15611d4e5760405163487ea6bb60e11b815260040160405180910390fd5b60cb546001600160a01b03163314611d8e5760cb546040516326030a7d60e11b81523360048201526001600160a01b039091166024820152604401610aec565b611d97816129a2565b50565b606060668054610b2690613d62565b611db4338383612def565b5050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190613d45565b15611e5c5760405163487ea6bb60e11b815260040160405180910390fd5b611e67338383612ebe565b611db4338383612c2a565b611e7c3383612b40565b611e985760405162461bcd60e51b8152600401610aec90613e5f565b610fa284848484612f18565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015611ef157600080fd5b505afa158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611f6657600080fd5b505afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e9190613d45565b8061209e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120299190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561206657600080fd5b505afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613d45565b6120e65760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680612121575060005460ff16155b61213d5760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff1615801561215f576000805461ffff19166101011790555b6121ac6040518060400160405280601181526020017056616c696461746f72204c6963656e736560781b81525060405180604001604052806002815260200161159360f21b815250612f4b565b60ca80546001600160a01b0319166001600160a01b0384161790558015611db4576000805461ff00191690555050565b60606121e78261253b565b61224b5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610aec565b6000612255612fd2565b9050600081511161227557604051806020016040528060008152506122a0565b8061227f84612fe1565b604051602001612290929190613efe565b6040516020818303038152906040525b9392505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122f557600080fd5b505afa158015612309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232d9190613d45565b1561234b5760405163487ea6bb60e11b815260040160405180910390fd5b60005b8151811015610d445761237b338484848151811061236e5761236e613e18565b6020026020010151612ebe565b61239f338484848151811061239257612392613e18565b6020026020010151612c2a565b6123a881613e44565b905061234e565b600081815260cc602052604081205462010000900460ff16600481111561084657610846613c10565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561242657600080fd5b505afa15801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190613d45565b1561247c5760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163fae7cde960e01b81526001600160a01b039091169063fae7cde9906124b090869086908690600401613d9d565b600060405180830381600087803b1580156124ca57600080fd5b505af11580156124de573d6000803e3d6000fd5b50505050610d44836129a2565b60006001600160e01b031982166380ac58cd60e01b148061251c57506001600160e01b03198216635b5e139f60e01b145b8061084657506301ffc9a760e01b6001600160e01b0319831614610846565b6000908152606760205260409020546001600160a01b0316151590565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a657600080fd5b505afa1580156125ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125de9190613d45565b156125fc5760405163487ea6bb60e11b815260040160405180910390fd5b6126058161253b565b61262557604051633db7d41d60e01b815260048101829052602401610aec565b600081815260cc602052604090205460ff161561267457600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b3361267e82611557565b6001600160a01b0316146126c2573361269682611557565b6040516326030a7d60e11b81526001600160a01b03928316600482015291166024820152604401610aec565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561271057600080fd5b505afa158015612724573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127489190613d2c565b60cb5460405163d97aa93960e01b8152600481018490526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561278c57600080fd5b505afa1580156127a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c49190613d2c565b10156128ee5760cb5460405163d97aa93960e01b8152600481018390526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613d2c565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561289457600080fd5b505afa1580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc9190613d2c565b60405163c7a28c7960e01b815260048101929092526024820152604401610aec565b600081815260cc6020526040808220805460ff1916600117905551829133917fc1349745afe42a30ca5b3f0dd04013e454370349eb8439a7846dfb04ce86d84e9190a350565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061296982611557565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f057600080fd5b505afa158015612a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a289190613d45565b15612a465760405163487ea6bb60e11b815260040160405180910390fd5b612a4f8161253b565b612a6f57604051633db7d41d60e01b815260048101829052602401610aec565b600081815260cc602052604090205460ff161515600114612ac257600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b33612acc82611557565b6001600160a01b031614158015612aee575060cb546001600160a01b03163314155b15612afd573361269682611557565b600081815260cc6020526040808220805460ff1916905551829133917f6d718f3573bd03685fd2c1d6aff97f5e16576969302643329e7a72ed5e16e10f9190a350565b6000612b4b8261253b565b612bac5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aec565b6000612bb783611557565b9050806001600160a01b0316846001600160a01b03161480612bf25750836001600160a01b0316612be784610ba9565b6001600160a01b0316145b80612c2257506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316612c3d82611557565b6001600160a01b031614612ca55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610aec565b6001600160a01b038216612d075760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610aec565b612d12838383612ebe565b612d1d600082612934565b6001600160a01b0383166000908152606860205260408120805460019290612d46908490613f2d565b90915550506001600160a01b0382166000908152606860205260408120805460019290612d74908490613f44565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611db48282604051806020016040528060008152506130df565b816001600160a01b0316836001600160a01b03161415612e515760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610aec565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600081815260cc602052604090205460ff1615612f0d57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b610d44838383613112565b612f23848484612c2a565b612f2f848484846131ca565b610fa25760405162461bcd60e51b8152600401610aec90613f5c565b600054610100900460ff1680612f64575060005460ff16155b612f805760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff16158015612fa2576000805461ffff19166101011790555b612faa6132d7565b612fb26132d7565b612fbc8383613342565b8015610d44576000805461ff0019169055505050565b606060d08054610b2690613d62565b6060816130055750506040805180820190915260018152600360fc1b602082015290565b8160005b811561302f578061301981613e44565b91506130289050600a83613fc4565b9150613009565b60008167ffffffffffffffff81111561304a5761304a6138a1565b6040519080825280601f01601f191660200182016040528015613074576020820181803683370190505b5090505b8415612c2257613089600183613f2d565b9150613096600a86613fd8565b6130a1906030613f44565b60f81b8183815181106130b6576130b6613e18565b60200101906001600160f81b031916908160001a9053506130d8600a86613fc4565b9450613078565b6130e983836133d7565b6130f660008484846131ca565b610d445760405162461bcd60e51b8152600401610aec90613f5c565b6001600160a01b03831661316d5761316881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b613190565b816001600160a01b0316836001600160a01b031614613190576131908382613516565b6001600160a01b0382166131a757610d44816135b3565b826001600160a01b0316826001600160a01b031614610d4457610d448282613662565b60006001600160a01b0384163b156132cc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061320e903390899088908890600401613fec565b602060405180830381600087803b15801561322857600080fd5b505af1925050508015613258575060408051601f3d908101601f1916820190925261325591810190614029565b60015b6132b2573d808015613286576040519150601f19603f3d011682016040523d82523d6000602084013e61328b565b606091505b5080516132aa5760405162461bcd60e51b8152600401610aec90613f5c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612c22565b506001949350505050565b600054610100900460ff16806132f0575060005460ff16155b61330c5760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff1615801561332e576000805461ffff19166101011790555b8015611d97576000805461ff001916905550565b600054610100900460ff168061335b575060005460ff16155b6133775760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff16158015613399576000805461ffff19166101011790555b82516133ac90606590602086019061372a565b5081516133c090606690602085019061372a565b508015610d44576000805461ff0019169055505050565b6001600160a01b03821661342d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610aec565b6134368161253b565b156134835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610aec565b61348f60008383612ebe565b6001600160a01b03821660009081526068602052604081208054600192906134b8908490613f44565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016135238461160d565b61352d9190613f2d565b600083815260986020526040902054909150808214613580576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906135c590600190613f2d565b6000838152609a6020526040812054609980549394509092849081106135ed576135ed613e18565b90600052602060002001549050806099838154811061360e5761360e613e18565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061364657613646614046565b6001900381819060005260206000200160009055905550505050565b600061366d8361160d565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280546136b290613d62565b90600052602060002090601f0160209004810192826136d4576000855561371a565b82601f106136ed5782800160ff1982351617855561371a565b8280016001018555821561371a579182015b8281111561371a5782358255916020019190600101906136ff565b5061372692915061379e565b5090565b82805461373690613d62565b90600052602060002090601f016020900481019282613758576000855561371a565b82601f1061377157805160ff191683800117855561371a565b8280016001018555821561371a579182015b8281111561371a578251825591602001919060010190613783565b5b80821115613726576000815560010161379f565b6001600160e01b031981168114611d9757600080fd5b6000602082840312156137db57600080fd5b81356122a0816137b3565b80356001600160a01b03811681146137fd57600080fd5b919050565b60006020828403121561381457600080fd5b6122a0826137e6565b60005b83811015613838578181015183820152602001613820565b83811115610fa25750506000910152565b6000815180845261386181602086016020860161381d565b601f01601f19169290920160200192915050565b6020815260006122a06020830184613849565b60006020828403121561389a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156138e0576138e06138a1565b604052919050565b600082601f8301126138f957600080fd5b813567ffffffffffffffff811115613913576139136138a1565b613926601f8201601f19166020016138b7565b81815284602083860101111561393b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561396d57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561399257600080fd5b61399e868287016138e8565b9150509250925092565b600080604083850312156139bb57600080fd5b6139c4836137e6565b946020939093013593505050565b600082601f8301126139e357600080fd5b8135602067ffffffffffffffff8211156139ff576139ff6138a1565b8160051b613a0e8282016138b7565b9283528481018201928281019087851115613a2857600080fd5b83870192505b84831015613a4757823582529183019190830190613a2e565b979650505050505050565b600080600060608486031215613a6757600080fd5b833567ffffffffffffffff80821115613a7f57600080fd5b613a8b878388016139d2565b9450602086013593506040860135915080821115613aa857600080fd5b5061399e868287016138e8565b600080600060608486031215613aca57600080fd5b613ad3846137e6565b9250613ae1602085016137e6565b9150604084013590509250925092565b803560ff811681146137fd57600080fd5b600060208284031215613b1457600080fd5b6122a082613af1565b60008060408385031215613b3057600080fd5b613b39836137e6565b9150602083013567ffffffffffffffff811115613b5557600080fd5b613b61858286016139d2565b9150509250929050565b60008060208385031215613b7e57600080fd5b823567ffffffffffffffff80821115613b9657600080fd5b818501915085601f830112613baa57600080fd5b813581811115613bb957600080fd5b866020828501011115613bcb57600080fd5b60209290920196919550909350505050565b60008060408385031215613bf057600080fd5b613bf983613af1565b9150613c07602084016137e6565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b831515815282151560208201526060810160058310613c5557634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8015158114611d9757600080fd5b60008060408385031215613c8457600080fd5b613c8d836137e6565b91506020830135613c9d81613c63565b809150509250929050565b60008060008060808587031215613cbe57600080fd5b613cc7856137e6565b9350613cd5602086016137e6565b925060408501359150606085013567ffffffffffffffff811115613cf857600080fd5b613d04878288016138e8565b91505092959194509250565b60008060408385031215613d2357600080fd5b613bf9836137e6565b600060208284031215613d3e57600080fd5b5051919050565b600060208284031215613d5757600080fd5b81516122a081613c63565b600181811c90821680613d7657607f821691505b60208210811415613d9757634e487b7160e01b600052602260045260246000fd5b50919050565b838152826020820152606060408201526000613dbc6060830184613849565b95945050505050565b606080825284519082018190526000906020906080840190828801845b82811015613dfe57815184529284019290840190600101613de2565b50505085828501528381036040850152613a478186613849565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613e5857613e58613e2e565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008351613f1081846020880161381d565b835190830190613f2481836020880161381d565b01949350505050565b600082821015613f3f57613f3f613e2e565b500390565b60008219821115613f5757613f57613e2e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082613fd357613fd3613fae565b500490565b600082613fe757613fe7613fae565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061401f90830184613849565b9695505050505050565b60006020828403121561403b57600080fd5b81516122a0816137b3565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b7bc2b59b51905349718445dd0f617b145a3f59f16e607b1dfc3d1ec2105395764736f6c63430008090033

Deployed ByteCode

0x60806040526004361061025c5760003560e01c80636c8d599011610144578063a22cb465116100b6578063c6a319fa1161007a578063c6a319fa14610726578063c87b56dd14610746578063d28a476114610766578063d7c5246514610786578063e985e9c5146107b8578063fae7cde91461080157600080fd5b8063a22cb46514610686578063a9059cbb146106a6578063b88d4fde146106c6578063c0e36955146106e6578063c4d66de81461070657600080fd5b806386f293fe1161010857806386f293fe146105b457806388776593146105d4578063906aff1b1461062657806395d89b41146106465780639b1075c01461065b5780639e6c29591461067157600080fd5b80636c8d59901461054157806370a0823114610561578063747daec5146105815780637bf75f6c146105a157806382afd23b146103b157600080fd5b80632dcc8c66116101dd5780634f6ccce7116101a15780634f6ccce71461047657806354fd4d50146104965780635686f69e146104b45780635c68408a146104d45780636352211e1461050157806365d5a9d01461052157600080fd5b80632dcc8c66146103e15780632f745c59146103f657806342842e0e14610416578063428e402b1461043657806343b6c21f1461045657600080fd5b8063095ea7b311610224578063095ea7b31461033257806316bfc0191461035257806318160ddd1461037257806323b872dd146103915780632776a4f7146103b157600080fd5b806301ffc9a714610261578063065465671461029657806306fdde03146102b8578063081812fc146102da578063083a301614610312575b600080fd5b34801561026d57600080fd5b5061028161027c3660046137c9565b610821565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b506102b66102b1366004613802565b61084c565b005b3480156102c457600080fd5b506102cd610b17565b60405161028d9190613875565b3480156102e657600080fd5b506102fa6102f5366004613888565b610ba9565b6040516001600160a01b03909116815260200161028d565b34801561031e57600080fd5b506102b661032d366004613958565b610c31565b34801561033e57600080fd5b506102b661034d3660046139a8565b610d49565b34801561035e57600080fd5b506102b661036d366004613a52565b610e5a565b34801561037e57600080fd5b506099545b60405190815260200161028d565b34801561039d57600080fd5b506102b66103ac366004613ab5565b610fa8565b3480156103bd57600080fd5b506102816103cc366004613888565b600090815260cc602052604090205460ff1690565b3480156103ed57600080fd5b506102cd610fd9565b34801561040257600080fd5b506103836104113660046139a8565b611067565b34801561042257600080fd5b506102b6610431366004613ab5565b6110fd565b34801561044257600080fd5b506102b6610451366004613802565b611118565b34801561046257600080fd5b506102b6610471366004613a52565b61137c565b34801561048257600080fd5b50610383610491366004613888565b6114c4565b3480156104a257600080fd5b50604051621e8873815260200161028d565b3480156104c057600080fd5b5060ce546102fa906001600160a01b031681565b3480156104e057600080fd5b506103836104ef366004613b02565b60cd6020526000908152604090205481565b34801561050d57600080fd5b506102fa61051c366004613888565b611557565b34801561052d57600080fd5b506102b661053c366004613b1d565b6115ce565b34801561054d57600080fd5b5060cb546102fa906001600160a01b031681565b34801561056d57600080fd5b5061038361057c366004613802565b61160d565b34801561058d57600080fd5b506102b661059c366004613b6b565b611694565b6102b66105af366004613bdd565b6118e2565b3480156105c057600080fd5b5060cf546102fa906001600160a01b031681565b3480156105e057600080fd5b506106176105ef366004613888565b60cc6020526000908152604090205460ff808216916101008104821691620100009091041683565b60405161028d93929190613c26565b34801561063257600080fd5b506102b6610641366004613888565b611caa565b34801561065257600080fd5b506102cd611d9a565b34801561066757600080fd5b5061038360c95481565b34801561067d57600080fd5b50610383606481565b34801561069257600080fd5b506102b66106a1366004613c71565b611da9565b3480156106b257600080fd5b506102b66106c13660046139a8565b611db8565b3480156106d257600080fd5b506102b66106e1366004613ca8565b611e72565b3480156106f257600080fd5b506102b6610701366004613802565b611ea4565b34801561071257600080fd5b506102b6610721366004613802565b612108565b34801561073257600080fd5b5060ca546102fa906001600160a01b031681565b34801561075257600080fd5b506102cd610761366004613888565b6121dc565b34801561077257600080fd5b506102b6610781366004613b1d565b6122a7565b34801561079257600080fd5b506107a66107a1366004613888565b6123af565b60405160ff909116815260200161028d565b3480156107c457600080fd5b506102816107d3366004613d10565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561080d57600080fd5b506102b661081c366004613958565b6123d8565b60006001600160e01b0319821663780e9d6360e01b14806108465750610846826124eb565b92915050565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561089957600080fd5b505afa1580156108ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d19190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561090e57600080fd5b505afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190613d45565b80610a46575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561099957600080fd5b505afa1580156109ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d19190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015610a0e57600080fd5b505afa158015610a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a469190613d45565b610af55760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b505afa158015610aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac69190613d2c565b6040516316b4d34b60e31b81526001600160a01b03909216600483015260248201526044015b60405180910390fd5b60ce80546001600160a01b0319166001600160a01b0392909216919091179055565b606060658054610b2690613d62565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5290613d62565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b5050505050905090565b6000610bb48261253b565b610c155760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aec565b506000908152606960205260409020546001600160a01b031690565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb79190613d45565b15610cd55760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163041d180b60e11b81526001600160a01b039091169063083a301690610d0990869086908690600401613d9d565b600060405180830381600087803b158015610d2357600080fd5b505af1158015610d37573d6000803e3d6000fd5b50505050610d4483612558565b505050565b6000610d5482611557565b9050806001600160a01b0316836001600160a01b03161415610dc25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610aec565b336001600160a01b0382161480610dde5750610dde81336107d3565b610e505760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610aec565b610d448383612934565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea857600080fd5b505afa158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190613d45565b15610efe5760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516316bfc01960e01b81526001600160a01b03909116906316bfc01990610f3290869086908690600401613dc5565b600060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b5050505060005b8351811015610fa257610f92848281518110610f8557610f85613e18565b60200260200101516129a2565b610f9b81613e44565b9050610f67565b50505050565b610fb23382612b40565b610fce5760405162461bcd60e51b8152600401610aec90613e5f565b610d44838383612c2a565b60d08054610fe690613d62565b80601f016020809104026020016040519081016040528092919081815260200182805461101290613d62565b801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b505050505081565b60006110728361160d565b82106110d45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610aec565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b610d4483838360405180602001604052806000815250611e72565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119d9190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190613d45565b80611312575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b15801561126557600080fd5b505afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156112da57600080fd5b505afa1580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190613d45565b61135a5760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ca57600080fd5b505afa1580156113de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114029190613d45565b156114205760405163487ea6bb60e11b815260040160405180910390fd5b60cf546040516343b6c21f60e01b81526001600160a01b03909116906343b6c21f9061145490869086908690600401613dc5565b600060405180830381600087803b15801561146e57600080fd5b505af1158015611482573d6000803e3d6000fd5b5050505060005b8351811015610fa2576114b48482815181106114a7576114a7613e18565b6020026020010151612558565b6114bd81613e44565b9050611489565b60006114cf60995490565b82106115325760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610aec565b6099828154811061154557611545613e18565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806108465760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610aec565b60005b8151811015610d44576115fd838383815181106115f0576115f0613e18565b6020026020010151610d49565b61160681613e44565b90506115d1565b60006001600160a01b0382166116785760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610aec565b506001600160a01b031660009081526068602052604090205490565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b1580156116e157600080fd5b505afa1580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561175657600080fd5b505afa15801561176a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178e9190613d45565b8061188e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b1580156117e157600080fd5b505afa1580156117f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118199190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561185657600080fd5b505afa15801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e9190613d45565b6118d65760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b610d4460d083836136a6565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b15801561192f57600080fd5b505afa158015611943573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119679190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc9190613d45565b80611adc575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611a2f57600080fd5b505afa158015611a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a679190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611aa457600080fd5b505afa158015611ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adc9190613d45565b611b245760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60048260ff161115611b4e5760405163263c4b5b60e01b815260ff83166004820152602401610aec565b600060c960008154611b5f90613e44565b91829055509050611b708282612dd5565b600081815260cc60205260409020805461ffff1916905560ff83166004811115611b9c57611b9c613c10565b600082815260cc60205260409020805462ff0000191662010000836004811115611bc857611bc8613c10565b021790555060cb546040516322c3164560e01b81526004810183905260ff851660248201526001600160a01b03909116906322c316459034906044016000604051808303818588803b158015611c1d57600080fd5b505af1158015611c31573d6000803e3d6000fd5b50505060ff8516600090815260cd60205260408120805493509150611c5583613e44565b91905055508260ff1681836001600160a01b03167ffa6892d2750f4db8fd8db154b0b304f0c078beac81f4a7f11ee8a8ee49f5be586000604051611c9d911515815260200190565b60405180910390a4505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cf857600080fd5b505afa158015611d0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d309190613d45565b15611d4e5760405163487ea6bb60e11b815260040160405180910390fd5b60cb546001600160a01b03163314611d8e5760cb546040516326030a7d60e11b81523360048201526001600160a01b039091166024820152604401610aec565b611d97816129a2565b50565b606060668054610b2690613d62565b611db4338383612def565b5050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190613d45565b15611e5c5760405163487ea6bb60e11b815260040160405180910390fd5b611e67338383612ebe565b611db4338383612c2a565b611e7c3383612b40565b611e985760405162461bcd60e51b8152600401610aec90613e5f565b610fa284848484612f18565b60ca546040805163a217fddf60e01b815290516001600160a01b03909216916391d1485491839163a217fddf91600480820192602092909190829003018186803b158015611ef157600080fd5b505afa158015611f05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f299190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b158015611f6657600080fd5b505afa158015611f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9e9190613d45565b8061209e575060ca546040805163a6b4321160e01b815290516001600160a01b03909216916391d1485491839163a6b4321191600480820192602092909190829003018186803b158015611ff157600080fd5b505afa158015612005573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120299190613d2c565b6040516001600160e01b031960e084901b168152600481019190915233602482015260440160206040518083038186803b15801561206657600080fd5b505afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613d45565b6120e65760ca546040805163a6b4321160e01b8152905133926001600160a01b03169163a6b43211916004808301926020929190829003018186803b158015610a8e57600080fd5b60cb80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680612121575060005460ff16155b61213d5760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff1615801561215f576000805461ffff19166101011790555b6121ac6040518060400160405280601181526020017056616c696461746f72204c6963656e736560781b81525060405180604001604052806002815260200161159360f21b815250612f4b565b60ca80546001600160a01b0319166001600160a01b0384161790558015611db4576000805461ff00191690555050565b60606121e78261253b565b61224b5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610aec565b6000612255612fd2565b9050600081511161227557604051806020016040528060008152506122a0565b8061227f84612fe1565b604051602001612290929190613efe565b6040516020818303038152906040525b9392505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122f557600080fd5b505afa158015612309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232d9190613d45565b1561234b5760405163487ea6bb60e11b815260040160405180910390fd5b60005b8151811015610d445761237b338484848151811061236e5761236e613e18565b6020026020010151612ebe565b61239f338484848151811061239257612392613e18565b6020026020010151612c2a565b6123a881613e44565b905061234e565b600081815260cc602052604081205462010000900460ff16600481111561084657610846613c10565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561242657600080fd5b505afa15801561243a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245e9190613d45565b1561247c5760405163487ea6bb60e11b815260040160405180910390fd5b60cf5460405163fae7cde960e01b81526001600160a01b039091169063fae7cde9906124b090869086908690600401613d9d565b600060405180830381600087803b1580156124ca57600080fd5b505af11580156124de573d6000803e3d6000fd5b50505050610d44836129a2565b60006001600160e01b031982166380ac58cd60e01b148061251c57506001600160e01b03198216635b5e139f60e01b145b8061084657506301ffc9a760e01b6001600160e01b0319831614610846565b6000908152606760205260409020546001600160a01b0316151590565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125a657600080fd5b505afa1580156125ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125de9190613d45565b156125fc5760405163487ea6bb60e11b815260040160405180910390fd5b6126058161253b565b61262557604051633db7d41d60e01b815260048101829052602401610aec565b600081815260cc602052604090205460ff161561267457600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b3361267e82611557565b6001600160a01b0316146126c2573361269682611557565b6040516326030a7d60e11b81526001600160a01b03928316600482015291166024820152604401610aec565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561271057600080fd5b505afa158015612724573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127489190613d2c565b60cb5460405163d97aa93960e01b8152600481018490526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561278c57600080fd5b505afa1580156127a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c49190613d2c565b10156128ee5760cb5460405163d97aa93960e01b8152600481018390526001600160a01b039091169063d97aa9399060240160206040518083038186803b15801561280e57600080fd5b505afa158015612822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128469190613d2c565b60cb60009054906101000a90046001600160a01b03166001600160a01b031663ad637bbf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561289457600080fd5b505afa1580156128a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cc9190613d2c565b60405163c7a28c7960e01b815260048101929092526024820152604401610aec565b600081815260cc6020526040808220805460ff1916600117905551829133917fc1349745afe42a30ca5b3f0dd04013e454370349eb8439a7846dfb04ce86d84e9190a350565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061296982611557565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60ca60009054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129f057600080fd5b505afa158015612a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a289190613d45565b15612a465760405163487ea6bb60e11b815260040160405180910390fd5b612a4f8161253b565b612a6f57604051633db7d41d60e01b815260048101829052602401610aec565b600081815260cc602052604090205460ff161515600114612ac257600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b33612acc82611557565b6001600160a01b031614158015612aee575060cb546001600160a01b03163314155b15612afd573361269682611557565b600081815260cc6020526040808220805460ff1916905551829133917f6d718f3573bd03685fd2c1d6aff97f5e16576969302643329e7a72ed5e16e10f9190a350565b6000612b4b8261253b565b612bac5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610aec565b6000612bb783611557565b9050806001600160a01b0316846001600160a01b03161480612bf25750836001600160a01b0316612be784610ba9565b6001600160a01b0316145b80612c2257506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316612c3d82611557565b6001600160a01b031614612ca55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610aec565b6001600160a01b038216612d075760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610aec565b612d12838383612ebe565b612d1d600082612934565b6001600160a01b0383166000908152606860205260408120805460019290612d46908490613f2d565b90915550506001600160a01b0382166000908152606860205260408120805460019290612d74908490613f44565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611db48282604051806020016040528060008152506130df565b816001600160a01b0316836001600160a01b03161415612e515760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610aec565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600081815260cc602052604090205460ff1615612f0d57600081815260cc602052604090819020549051639a5498c160e01b81526004810183905260ff90911615156024820152604401610aec565b610d44838383613112565b612f23848484612c2a565b612f2f848484846131ca565b610fa25760405162461bcd60e51b8152600401610aec90613f5c565b600054610100900460ff1680612f64575060005460ff16155b612f805760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff16158015612fa2576000805461ffff19166101011790555b612faa6132d7565b612fb26132d7565b612fbc8383613342565b8015610d44576000805461ff0019169055505050565b606060d08054610b2690613d62565b6060816130055750506040805180820190915260018152600360fc1b602082015290565b8160005b811561302f578061301981613e44565b91506130289050600a83613fc4565b9150613009565b60008167ffffffffffffffff81111561304a5761304a6138a1565b6040519080825280601f01601f191660200182016040528015613074576020820181803683370190505b5090505b8415612c2257613089600183613f2d565b9150613096600a86613fd8565b6130a1906030613f44565b60f81b8183815181106130b6576130b6613e18565b60200101906001600160f81b031916908160001a9053506130d8600a86613fc4565b9450613078565b6130e983836133d7565b6130f660008484846131ca565b610d445760405162461bcd60e51b8152600401610aec90613f5c565b6001600160a01b03831661316d5761316881609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b613190565b816001600160a01b0316836001600160a01b031614613190576131908382613516565b6001600160a01b0382166131a757610d44816135b3565b826001600160a01b0316826001600160a01b031614610d4457610d448282613662565b60006001600160a01b0384163b156132cc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061320e903390899088908890600401613fec565b602060405180830381600087803b15801561322857600080fd5b505af1925050508015613258575060408051601f3d908101601f1916820190925261325591810190614029565b60015b6132b2573d808015613286576040519150601f19603f3d011682016040523d82523d6000602084013e61328b565b606091505b5080516132aa5760405162461bcd60e51b8152600401610aec90613f5c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612c22565b506001949350505050565b600054610100900460ff16806132f0575060005460ff16155b61330c5760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff1615801561332e576000805461ffff19166101011790555b8015611d97576000805461ff001916905550565b600054610100900460ff168061335b575060005460ff16155b6133775760405162461bcd60e51b8152600401610aec90613eb0565b600054610100900460ff16158015613399576000805461ffff19166101011790555b82516133ac90606590602086019061372a565b5081516133c090606690602085019061372a565b508015610d44576000805461ff0019169055505050565b6001600160a01b03821661342d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610aec565b6134368161253b565b156134835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610aec565b61348f60008383612ebe565b6001600160a01b03821660009081526068602052604081208054600192906134b8908490613f44565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600060016135238461160d565b61352d9190613f2d565b600083815260986020526040902054909150808214613580576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b6099546000906135c590600190613f2d565b6000838152609a6020526040812054609980549394509092849081106135ed576135ed613e18565b90600052602060002001549050806099838154811061360e5761360e613e18565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061364657613646614046565b6001900381819060005260206000200160009055905550505050565b600061366d8361160d565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b8280546136b290613d62565b90600052602060002090601f0160209004810192826136d4576000855561371a565b82601f106136ed5782800160ff1982351617855561371a565b8280016001018555821561371a579182015b8281111561371a5782358255916020019190600101906136ff565b5061372692915061379e565b5090565b82805461373690613d62565b90600052602060002090601f016020900481019282613758576000855561371a565b82601f1061377157805160ff191683800117855561371a565b8280016001018555821561371a579182015b8281111561371a578251825591602001919060010190613783565b5b80821115613726576000815560010161379f565b6001600160e01b031981168114611d9757600080fd5b6000602082840312156137db57600080fd5b81356122a0816137b3565b80356001600160a01b03811681146137fd57600080fd5b919050565b60006020828403121561381457600080fd5b6122a0826137e6565b60005b83811015613838578181015183820152602001613820565b83811115610fa25750506000910152565b6000815180845261386181602086016020860161381d565b601f01601f19169290920160200192915050565b6020815260006122a06020830184613849565b60006020828403121561389a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156138e0576138e06138a1565b604052919050565b600082601f8301126138f957600080fd5b813567ffffffffffffffff811115613913576139136138a1565b613926601f8201601f19166020016138b7565b81815284602083860101111561393b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561396d57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561399257600080fd5b61399e868287016138e8565b9150509250925092565b600080604083850312156139bb57600080fd5b6139c4836137e6565b946020939093013593505050565b600082601f8301126139e357600080fd5b8135602067ffffffffffffffff8211156139ff576139ff6138a1565b8160051b613a0e8282016138b7565b9283528481018201928281019087851115613a2857600080fd5b83870192505b84831015613a4757823582529183019190830190613a2e565b979650505050505050565b600080600060608486031215613a6757600080fd5b833567ffffffffffffffff80821115613a7f57600080fd5b613a8b878388016139d2565b9450602086013593506040860135915080821115613aa857600080fd5b5061399e868287016138e8565b600080600060608486031215613aca57600080fd5b613ad3846137e6565b9250613ae1602085016137e6565b9150604084013590509250925092565b803560ff811681146137fd57600080fd5b600060208284031215613b1457600080fd5b6122a082613af1565b60008060408385031215613b3057600080fd5b613b39836137e6565b9150602083013567ffffffffffffffff811115613b5557600080fd5b613b61858286016139d2565b9150509250929050565b60008060208385031215613b7e57600080fd5b823567ffffffffffffffff80821115613b9657600080fd5b818501915085601f830112613baa57600080fd5b813581811115613bb957600080fd5b866020828501011115613bcb57600080fd5b60209290920196919550909350505050565b60008060408385031215613bf057600080fd5b613bf983613af1565b9150613c07602084016137e6565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b831515815282151560208201526060810160058310613c5557634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8015158114611d9757600080fd5b60008060408385031215613c8457600080fd5b613c8d836137e6565b91506020830135613c9d81613c63565b809150509250929050565b60008060008060808587031215613cbe57600080fd5b613cc7856137e6565b9350613cd5602086016137e6565b925060408501359150606085013567ffffffffffffffff811115613cf857600080fd5b613d04878288016138e8565b91505092959194509250565b60008060408385031215613d2357600080fd5b613bf9836137e6565b600060208284031215613d3e57600080fd5b5051919050565b600060208284031215613d5757600080fd5b81516122a081613c63565b600181811c90821680613d7657607f821691505b60208210811415613d9757634e487b7160e01b600052602260045260246000fd5b50919050565b838152826020820152606060408201526000613dbc6060830184613849565b95945050505050565b606080825284519082018190526000906020906080840190828801845b82811015613dfe57815184529284019290840190600101613de2565b50505085828501528381036040850152613a478186613849565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415613e5857613e58613e2e565b5060010190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60008351613f1081846020880161381d565b835190830190613f2481836020880161381d565b01949350505050565b600082821015613f3f57613f3f613e2e565b500390565b60008219821115613f5757613f57613e2e565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082613fd357613fd3613fae565b500490565b600082613fe757613fe7613fae565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061401f90830184613849565b9695505050505050565b60006020828403121561403b57600080fd5b81516122a0816137b3565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b7bc2b59b51905349718445dd0f617b145a3f59f16e607b1dfc3d1ec2105395764736f6c63430008090033