[ { "inputs": [], "name": "BTOKEN_DEADLINE_EXPIRED", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_PARAMS", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_PARAMS", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_SIG", "type": "error" }, { "inputs": [], "name": "BTOKEN_INVALID_TO_ADDR", "type": "error" }, { "inputs": [], "name": "BTOKEN_MINT_DISALLOWED", "type": "error" }, { "inputs": [], "name": "FUNC_NOT_IMPLEMENTED", "type": "error" }, { "inputs": [], "name": "INVALID_PAUSE_STATUS", "type": "error" }, { "inputs": [], "name": "REENTRANT_CALL", "type": "error" }, { "inputs": [], "name": "RESOLVER_DENIED", "type": "error" }, { "inputs": [], "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { "inputs": [], "name": "RESOLVER_UNEXPECTED_CHAINID", "type": "error" }, { "inputs": [ { "internalType": "uint64", "name": "chainId", "type": "uint64" }, { "internalType": "bytes32", "name": "name", "type": "bytes32" } ], "name": "RESOLVER_ZERO_ADDR", "type": "error" }, { "inputs": [], "name": "ZERO_ADDRESS", "type": "error" }, { "inputs": [], "name": "ZERO_VALUE", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "migratedFrom", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MigratedFrom", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "migratedTo", "type": "address" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "MigratedTo", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "inbound", "type": "bool" } ], "name": "MigrationStatusChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "__srcDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "addressManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "canonical", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_migratingAddress", "type": "address" }, { "internalType": "bool", "name": "_migratingInbound", "type": "bool" } ], "name": "changeMigrationStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "impl", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inNonReentrant", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_sharedAddressManager", "type": "address" }, { "internalType": "address", "name": "_srcToken", "type": "address" }, { "internalType": "uint256", "name": "_srcChainId", "type": "uint256" }, { "internalType": "uint8", "name": "_decimals", "type": "uint8" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "string", "name": "_name", "type": "string" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "init2", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isMigratingOut", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUnpausedAt", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratingAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "migratingInbound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_chainId", "type": "uint64" }, { "internalType": "bytes32", "name": "_name", "type": "bytes32" }, { "internalType": "bool", "name": "_allowZeroAddress", "type": "bool" } ], "name": "resolve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_name", "type": "bytes32" }, { "internalType": "bool", "name": "_allowZeroAddress", "type": "bool" } ], "name": "resolve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "srcChainId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "srcToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a06040523060805234801562000014575f80fd5b506200001f6200002f565b620000296200002f565b620000ed565b5f54610100900460ff16156200009b5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614620000eb575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051613210620001225f395f81816109f801528181610a3801528181610d5701528181610d970152610e0e01526132105ff3fe60806040526004361061026a575f3560e01c806370a082311161014a578063a457c2d7116100be578063d505accf11610078578063d505accf14610729578063dd62ed3e14610748578063e07baba614610767578063e30c3978146107a6578063f12506c1146107c3578063f2fde38b146107d7575f80fd5b8063a457c2d71461066d578063a77f15161461068c578063a86f9d9e146106ad578063a9059cbb146106cc578063b8f2e0c5146106eb578063bb86ef931461070a575f80fd5b80637ecebe001161010f5780637ecebe00146105ce5780638456cb59146105ed57806384b0196e146106015780638abf6077146106285780638da5cb5b1461063c57806395d89b4114610659575f80fd5b806370a0823114610532578063715018a61461056657806379ba50971461057a5780637cf8ed0d1461058e5780637e474634146105ae575f80fd5b80633659cfe6116101e157806340c10f19116101a657806340c10f191461049757806342966c68146104b657806349d12605146104d55780634f1ef286146104eb57806352d1902d146104fe5780635c975abb14610512575f80fd5b80633659cfe6146103ef578063395093511461040e5780633ab76e9f1461042d5780633eb6b8cf146104645780633f4ba83a14610483575f80fd5b806318160ddd1161023257806318160ddd1461031957806323b872dd1461033757806326afaadd146103565780633075db561461039a578063313ce567146103ae5780633644e515146103db575f80fd5b806301ffc9a71461026e578063069489a2146102a257806306fdde03146102b8578063095ea7b3146102d95780630ae74548146102f8575b5f80fd5b348015610279575f80fd5b5061028d6102883660046129a8565b6107f6565b60405190151581526020015b60405180910390f35b3480156102ad575f80fd5b506102b661083b565b005b3480156102c3575f80fd5b506102cc610900565b6040516102999190612a1c565b3480156102e4575f80fd5b5061028d6102f3366004612a42565b610990565b348015610303575f80fd5b5061012f5461028d90600160a01b900460ff1681565b348015610324575f80fd5b5060fd545b604051908152602001610299565b348015610342575f80fd5b5061028d610351366004612a6c565b6109a7565b348015610361575f80fd5b5061037b61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610299565b3480156103a5575f80fd5b5061028d6109cc565b3480156103b9575f80fd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610299565b3480156103e6575f80fd5b506103296109e0565b3480156103fa575f80fd5b506102b6610409366004612aaa565b6109ee565b348015610419575f80fd5b5061028d610428366004612a42565b610ab5565b348015610438575f80fd5b5060975461044c906001600160a01b031681565b6040516001600160a01b039091168152602001610299565b34801561046f575f80fd5b5061044c61047e366004612ad9565b610ad6565b34801561048e575f80fd5b506102b6610aea565b3480156104a2575f80fd5b506102b66104b1366004612a42565b610afe565b3480156104c1575f80fd5b506102b66104d0366004612b20565b610c14565b3480156104e0575f80fd5b5061032961012e5481565b6102b66104f9366004612b4b565b610d4d565b348015610509575f80fd5b50610329610e02565b34801561051d575f80fd5b5061028d60c954610100900460ff1660021490565b34801561053d575f80fd5b5061032961054c366004612aaa565b6001600160a01b03165f90815260fb602052604090205490565b348015610571575f80fd5b506102b6610eb3565b348015610585575f80fd5b506102b6610ec4565b348015610599575f80fd5b5061012d5461044c906001600160a01b031681565b3480156105b9575f80fd5b5061012f5461044c906001600160a01b031681565b3480156105d9575f80fd5b506103296105e8366004612aaa565b610f3b565b3480156105f8575f80fd5b506102b6610f59565b34801561060c575f80fd5b50610615610f6c565b6040516102999796959493929190612c09565b348015610633575f80fd5b5061044c611007565b348015610647575f80fd5b506033546001600160a01b031661044c565b348015610664575f80fd5b506102cc611010565b348015610678575f80fd5b5061028d610687366004612a42565b61101f565b348015610697575f80fd5b5061012d546103c990600160a01b900460ff1681565b3480156106b8575f80fd5b5061044c6106c7366004612ca0565b6110a4565b3480156106d7575f80fd5b5061028d6106e6366004612a42565b6110b0565b3480156106f6575f80fd5b506102b6610705366004612cca565b6110bd565b348015610715575f80fd5b506102b6610724366004612d49565b611236565b348015610734575f80fd5b506102b6610743366004612e05565b6113e7565b348015610753575f80fd5b50610329610762366004612e6e565b6114ea565b348015610772575f80fd5b5060c95461078d9062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610299565b3480156107b1575f80fd5b506065546001600160a01b031661044c565b3480156107ce575f80fd5b5061028d611514565b3480156107e2575f80fd5b506102b66107f1366004612aaa565b61153f565b5f6001600160e01b03198216634ec7fbed60e11b148061082657506001600160e01b031982166342580cb760e11b145b806108355750610835826115b0565b92915050565b5f54600290610100900460ff1615801561085b57505f5460ff8083169116105b6108805760405162461bcd60e51b815260040161087790612ea5565b60405180910390fd5b5f805461ffff191660ff8316176101001790556108bd61089e610900565b604051806040016040528060018152602001603160f81b815250611651565b5f805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060fe805461090f90612ef3565b80601f016020809104026020016040519081016040528092919081815260200182805461093b90612ef3565b80156109865780601f1061095d57610100808354040283529160200191610986565b820191905f5260205f20905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b5f3361099d8185856116a2565b5060019392505050565b5f336109b48582856117c5565b6109bf85858561183d565b60019150505b9392505050565b5f60026109d76119f1565b60ff1614905090565b5f6109e9611a30565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a365760405162461bcd60e51b815260040161087790612f25565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a68611a39565b6001600160a01b031614610a8e5760405162461bcd60e51b815260040161087790612f71565b610a9781611a54565b604080515f80825260208201909252610ab291839190611a5c565b50565b5f3361099d818585610ac783836114ea565b610ad19190612fbd565b6116a2565b5f610ae2848484611bc6565b949350505050565b610af2611c19565b610afc335f611caa565b565b610b1260c954610100900460ff1660021490565b15610b305760405163bae6e2a960e01b815260040160405180910390fd5b6002610b3a6119f1565b60ff1603610b5b5760405163dfc60d8560e01b815260040160405180910390fd5b610b656002611cb2565b610b6d611514565b15610b8b5760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610bf257826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610be591815260200190565b60405180910390a3610bfb565b610bfb33611cfa565b610c058383611d76565b50610c106001611cb2565b5050565b610c2860c954610100900460ff1660021490565b15610c465760405163bae6e2a960e01b815260040160405180910390fd5b6002610c506119f1565b60ff1603610c715760405163dfc60d8560e01b815260040160405180910390fd5b610c7b6002611cb2565b610c83611514565b15610d305761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610d14575f80fd5b505af1158015610d26573d5f803e3d5ffd5b5050505050610d39565b610d3933611cfa565b610d433382611e40565b610ab26001611cb2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d955760405162461bcd60e51b815260040161087790612f25565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dc7611a39565b6001600160a01b031614610ded5760405162461bcd60e51b815260040161087790612f71565b610df682611a54565b610c1082826001611a5c565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ea15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610877565b505f8051602061319483398151915290565b610ebb611f7d565b610afc5f611fd7565b60655433906001600160a01b03168114610f325760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610877565b610ab281611fd7565b6001600160a01b0381165f9081526101936020526040812054610835565b610f61611ff0565b610afc336001611caa565b5f6060805f805f606061015f545f801b148015610f8a575061016054155b610fce5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610877565b610fd6612061565b610fde612071565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6109e9611a39565b606060ff805461090f90612ef3565b5f338161102c82866114ea565b90508381101561108c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610877565b61109982868684036116a2565b506001949350505050565b5f6109c5468484611bc6565b5f3361099d81858561183d565b6110d160c954610100900460ff1660021490565b156110ef5760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b6111098160016110a4565b6001600160a01b0316336001600160a01b03161461113a57604051630d85cccf60e11b815260040160405180910390fd5b60026111446119f1565b60ff16036111655760405163dfc60d8560e01b815260040160405180910390fd5b61116f6002611cb2565b61012f546001600160a01b0384811691161480156111a0575061012f60149054906101000a900460ff161515821515145b156111be5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a16112316001611cb2565b505050565b5f54600290610100900460ff1615801561125657505f5460ff8083169116105b6112725760405162461bcd60e51b815260040161087790612ea5565b5f805461ffff191660ff83161761010017905561128f8888612081565b6112998a8a6120bd565b61130a83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f920191909152506120f792505050565b61136183838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250506040805180820190915260018152603160f81b602082015291506116519050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790555f805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906113d390839060ff91909116815260200190565b60405180910390a150505050505050505050565b83421115611408576040516316ae274d60e11b815260040160405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886114368c612127565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6114908261214f565b90505f61149f8287878761217b565b9050896001600160a01b0316816001600160a01b0316146114d3576040516370ef21cb60e11b815260040160405180910390fd5b6114de8a8a8a6116a2565b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b0316158015906109e957505061012f54600160a01b900460ff161590565b611547611f7d565b606580546001600160a01b0383166001600160a01b031990911681179091556115786033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b0319821663093e326b60e21b14806115e057506001600160e01b0319821663bb86ef9360e01b145b806115fb57506001600160e01b0319821663b8f2e0c560e01b145b8061161657506001600160e01b031982166336372b0760e01b145b8061163157506001600160e01b0319821663a219a02560e01b145b8061083557506001600160e01b031982166301ffc9a760e01b1492915050565b5f54610100900460ff166116775760405162461bcd60e51b815260040161087790612fdc565b6101616116848382613072565b506101626116928282613072565b50505f61015f8190556101605550565b6001600160a01b0383166117045760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610877565b6001600160a01b0382166117655760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610877565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6117d084846114ea565b90505f198114611837578181101561182a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610877565b61183784848484036116a2565b50505050565b6001600160a01b0383166118a15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610877565b6001600160a01b0382166119035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610877565b61190e8383836121a1565b6001600160a01b0383165f90815260fb6020526040902054818110156119855760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610877565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119e49086815260200190565b60405180910390a3611837565b5f6119fb466121dc565b15611a2657507fa5054f728453d3dbe953bdc43e4d0cb97e662ea32d7958190f3dc2da31d9721b5c90565b5060c95460ff1690565b5f6109e9612209565b5f80516020613194833981519152546001600160a01b031690565b610ab2611f7d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a8f576112318361227c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ae9575060408051601f3d908101601f19168201909252611ae691810190613132565b60015b611b4c5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610877565b5f805160206131948339815191528114611bba5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610877565b50611231838383612317565b5f611bd1848461233b565b905081158015611be857506001600160a01b038116155b156109c557604051632b0d65db60e01b815267ffffffffffffffff8516600482015260248101849052604401610877565b611c2d60c954610100900460ff1660021490565b611c4a5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610c10611f7d565b611cbb466121dc565b15611ce657807fa5054f728453d3dbe953bdc43e4d0cb97e662ea32d7958190f3dc2da31d9721b5d50565b60c9805460ff831660ff1990911617905550565b6a195c98cc8c17dd985d5b1d60aa1b611d1b6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015611d585750611d428160016110a4565b6001600160a01b0316336001600160a01b031614155b15610c1057604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b038216611dcc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610877565b611dd75f83836121a1565b8060fd5f828254611de89190612fbd565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611ea05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610877565b611eab825f836121a1565b6001600160a01b0382165f90815260fb602052604090205481811015611f1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610877565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b03163314610afc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610877565b606580546001600160a01b0319169055610ab2816123de565b61200460c954610100900460ff1660021490565b156120225760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611ca0565b6060610161805461090f90612ef3565b6060610162805461090f90612ef3565b6001600160a01b0382161580612095575080155b8061209f57504681145b15610c105760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b0381166120e55760405163538ba4f960e01b815260040160405180910390fd5b6120ee8361242f565b6112318261248d565b5f54610100900460ff1661211d5760405162461bcd60e51b815260040161087790612fdc565b610c1082826124fe565b6001600160a01b0381165f908152610193602052604090208054600181018255905b50919050565b5f61083561215b611a30565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f61218a8787878761253d565b91509150612197816125fa565b5095945050505050565b6121b560c954610100900460ff1660021490565b156121d35760405163bae6e2a960e01b815260040160405180910390fd5b61123182612743565b5f60018214806121ed575061426882145b806121fa575062aa36a782145b8061083557506108358261276c565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612233612783565b61223b6127dc565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381163b6122e95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610877565b5f8051602061319483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6123208361280d565b5f8251118061232c5750805b1561123157611837838361284c565b6097545f906001600160a01b03168061236757604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156123ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae29190613149565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166124555760405162461bcd60e51b815260040161087790612fdc565b61245d612871565b61247b6001600160a01b038216156124755781611fd7565b33611fd7565b5060c9805461ff001916610100179055565b5f54610100900460ff166124b35760405162461bcd60e51b815260040161087790612fdc565b67ffffffffffffffff4611156124dc5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166125245760405162461bcd60e51b815260040161087790612fdc565b60fe6125308382613072565b5060ff6112318282613072565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561257257505f905060036125f1565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156125c3573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166125eb575f600192509250506125f1565b91505f90505b94509492505050565b5f81600481111561260d5761260d613164565b036126155750565b600181600481111561262957612629613164565b036126765760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610877565b600281600481111561268a5761268a613164565b036126d75760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610877565b60038160048111156126eb576126eb613164565b03610ab25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610877565b306001600160a01b03821603610ab257604051630c292c9d60e21b815260040160405180910390fd5b5f617e2c8210158015610835575050617e90101590565b5f8061278d612061565b8051909150156127a4578051602090910120919050565b61015f5480156127b45792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5f806127e6612071565b8051909150156127fd578051602090910120919050565b6101605480156127b45792915050565b6128168161227c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109c583836040518060600160405280602781526020016131b460279139612897565b5f54610100900460ff16610afc5760405162461bcd60e51b815260040161087790612fdc565b60605f80856001600160a01b0316856040516128b39190613178565b5f60405180830381855af49150503d805f81146128eb576040519150601f19603f3d011682016040523d82523d5f602084013e6128f0565b606091505b50915091506129018683838761290b565b9695505050505050565b606083156129795782515f03612972576001600160a01b0385163b6129725760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610877565b5081610ae2565b610ae2838381511561298e5781518083602001fd5b8060405162461bcd60e51b81526004016108779190612a1c565b5f602082840312156129b8575f80fd5b81356001600160e01b0319811681146109c5575f80fd5b5f5b838110156129e95781810151838201526020016129d1565b50505f910152565b5f8151808452612a088160208601602086016129cf565b601f01601f19169290920160200192915050565b602081525f6109c560208301846129f1565b6001600160a01b0381168114610ab2575f80fd5b5f8060408385031215612a53575f80fd5b8235612a5e81612a2e565b946020939093013593505050565b5f805f60608486031215612a7e575f80fd5b8335612a8981612a2e565b92506020840135612a9981612a2e565b929592945050506040919091013590565b5f60208284031215612aba575f80fd5b81356109c581612a2e565b80358015158114612ad4575f80fd5b919050565b5f805f60608486031215612aeb575f80fd5b833567ffffffffffffffff81168114612b02575f80fd5b925060208401359150612b1760408501612ac5565b90509250925092565b5f60208284031215612b30575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612b5c575f80fd5b8235612b6781612a2e565b9150602083013567ffffffffffffffff80821115612b83575f80fd5b818501915085601f830112612b96575f80fd5b813581811115612ba857612ba8612b37565b604051601f8201601f19908116603f01168101908382118183101715612bd057612bd0612b37565b81604052828152886020848701011115612be8575f80fd5b826020860160208301375f6020848301015280955050505050509250929050565b60ff60f81b881681525f602060e06020840152612c2960e084018a6129f1565b8381036040850152612c3b818a6129f1565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015612c8e57835183529284019291840191600101612c72565b50909c9b505050505050505050505050565b5f8060408385031215612cb1575f80fd5b82359150612cc160208401612ac5565b90509250929050565b5f8060408385031215612cdb575f80fd5b8235612ce681612a2e565b9150612cc160208401612ac5565b803560ff81168114612ad4575f80fd5b5f8083601f840112612d14575f80fd5b50813567ffffffffffffffff811115612d2b575f80fd5b602083019150836020828501011115612d42575f80fd5b9250929050565b5f805f805f805f805f60e08a8c031215612d61575f80fd5b8935612d6c81612a2e565b985060208a0135612d7c81612a2e565b975060408a0135612d8c81612a2e565b965060608a01359550612da160808b01612cf4565b945060a08a013567ffffffffffffffff80821115612dbd575f80fd5b612dc98d838e01612d04565b909650945060c08c0135915080821115612de1575f80fd5b50612dee8c828d01612d04565b915080935050809150509295985092959850929598565b5f805f805f805f60e0888a031215612e1b575f80fd5b8735612e2681612a2e565b96506020880135612e3681612a2e565b95506040880135945060608801359350612e5260808901612cf4565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215612e7f575f80fd5b8235612e8a81612a2e565b91506020830135612e9a81612a2e565b809150509250929050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600181811c90821680612f0757607f821691505b60208210810361214957634e487b7160e01b5f52602260045260245ffd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561083557634e487b7160e01b5f52601160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561123157805f5260205f20601f840160051c8101602085101561304c5750805b601f840160051c820191505b8181101561306b575f8155600101613058565b5050505050565b815167ffffffffffffffff81111561308c5761308c612b37565b6130a08161309a8454612ef3565b84613027565b602080601f8311600181146130d3575f84156130bc5750858301515b5f19600386901b1c1916600185901b17855561312a565b5f85815260208120601f198616915b82811015613101578886015182559484019460019091019084016130e2565b508582101561311e57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215613142575f80fd5b5051919050565b5f60208284031215613159575f80fd5b81516109c581612a2e565b634e487b7160e01b5f52602160045260245ffd5b5f82516131898184602087016129cf565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220df8a7c2b6f1583703d2d27c3382081f3996fe33761f177ccf8b74b5cdce9b06864736f6c63430008180033