0 txs
0 calls
constructor
No constructor.
functions
affiliateBalance
viewfunction affiliateBalance(address affiliate) view returns (uint128)
affiliateBalanceToken
viewfunction affiliateBalanceToken(address affiliate, address token) view returns (uint128)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
burnConfig
viewfunction burnConfig() view returns (address archetype, bool enabled, bool reversed, uint16 ratio, uint64 start, uint64 limit)
config
viewfunction config() view returns (string baseUri, address affiliateSigner, address ownerAltPayout, address superAffiliatePayout, uint32 maxSupply, uint32 maxBatchSize, uint16 affiliateFee, uint16 platformFee, uint16 defaultRoyalty, tuple discounts)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getTokenMsg
viewfunction getTokenMsg(uint256 tokenId) view returns (string)
invites
viewfunction invites(bytes32) view returns (uint128 price, uint128 reservePrice, uint128 delta, uint32 start, uint32 limit, uint32 maxSupply, uint32 interval, address tokenAddress)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
listSupply
viewfunction listSupply(bytes32 key) view returns (uint256)
minted
viewfunction minted(address minter, bytes32 key) view returns (uint256)
name
viewfunction name() view returns (string)
options
viewfunction options() view returns (bool uriLocked, bool maxSupplyLocked, bool affiliateFeeLocked, bool discountsLocked, bool ownerAltPayoutLocked, bool royaltyEnforcementEnabled, bool royaltyEnforcementLocked, bool provenanceHashLocked)
owner
viewfunction owner() view returns (address)
ownerBalance
viewfunction ownerBalance() view returns (tuple)
ownerBalanceToken
viewfunction ownerBalanceToken(address token) view returns (tuple)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
platform
purefunction platform() pure returns (address)
provenance
viewfunction provenance() view returns (string)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
payablefunction approve(address operator, uint256 tokenId) payable
batchMintTo
payablefunction batchMintTo(tuple auth, address[] toList, uint256[] quantityList, address affiliate, bytes signature) payable
burnToMint
nonpayablefunction burnToMint(uint256[] tokenIds)
disableBurnToMint
nonpayablefunction disableBurnToMint()
disableRoyaltyEnforcement
nonpayablefunction disableRoyaltyEnforcement()
enableBurnToMint
nonpayablefunction enableBurnToMint(address archetype, bool reversed, uint16 ratio, uint64 start, uint64 limit)
enableRoyaltyEnforcement
nonpayablefunction enableRoyaltyEnforcement()
initialize
nonpayablefunction initialize(string name, string symbol, tuple config_, address _receiver)
lockAffiliateFee
nonpayablefunction lockAffiliateFee(string password)
lockDiscounts
nonpayablefunction lockDiscounts(string password)
lockMaxSupply
nonpayablefunction lockMaxSupply(string password)
lockOwnerAltPayout
nonpayablefunction lockOwnerAltPayout(string password)
lockProvenanceHash
nonpayablefunction lockProvenanceHash(string password)
lockRoyaltyEnforcement
nonpayablefunction lockRoyaltyEnforcement(string password)
lockURI
nonpayablefunction lockURI(string password)
mint
payablefunction mint(tuple auth, uint256 quantity, address affiliate, bytes signature) payable
mintTo
payablefunction mintTo(tuple auth, uint256 quantity, address to, address affiliate, bytes signature) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
setAffiliateFee
nonpayablefunction setAffiliateFee(uint16 affiliateFee)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string baseUri)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint16 feeNumerator)
setDiscounts
nonpayablefunction setDiscounts(tuple discounts)
setDutchInvite
nonpayablefunction setDutchInvite(bytes32 _key, bytes32 _cid, tuple _dutchInvite)
setInvite
nonpayablefunction setInvite(bytes32 _key, bytes32 _cid, tuple _invite)
setMaxBatchSize
nonpayablefunction setMaxBatchSize(uint32 maxBatchSize)
setMaxSupply
nonpayablefunction setMaxSupply(uint32 maxSupply, string password)
setOwnerAltPayout
nonpayablefunction setOwnerAltPayout(address ownerAltPayout)
setProvenanceHash
nonpayablefunction setProvenanceHash(string provenanceHash)
setSuperAffiliatePayout
nonpayablefunction setSuperAffiliatePayout(address superAffiliatePayout)
setTokenMsg
nonpayablefunction setTokenMsg(uint256 tokenId, string message)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
withdrawTokens
nonpayablefunction withdrawTokens(address[] tokens)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
Initialized
event Initialized(uint8 version)
Invited
event Invited(bytes32 indexed key, bytes32 indexed cid)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Referral
event Referral(address indexed affiliate, address token, uint128 wad, uint256 numMints)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
Withdrawal
event Withdrawal(address indexed src, address token, uint128 wad)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceEmpty
error BalanceEmpty()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
InvalidConfig
error InvalidConfig()
LockedForever
error LockedForever()
MaxSupplyExceeded
error MaxSupplyExceeded()
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
NotPlatform
error NotPlatform()
NotTokenOwner
error NotTokenOwner()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFailed
error TransferFailed()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
WrongPassword
error WrongPassword()
creation bytecode
0x608060405234801561001057600080fd5b506158ef80620000216000396000f3fe6080604052600436106103a25760003560e01c8063715018a6116101e7578063b88d4fde1161010d578063d71d8d23116100a0578063ead005531161006f578063ead0055314610dc2578063ef88317214610de2578063f2fde38b14610e02578063fd614f2a14610e2257600080fd5b8063d71d8d2314610d42578063de6cd0db14610d62578063e350a75614610d82578063e985e9c514610da257600080fd5b8063c58ee209116100dc578063c58ee20914610cc2578063c7494df714610ce2578063c87b56dd14610d02578063ce216e2f14610d2257600080fd5b8063b88d4fde14610c0a578063bcc1ed0714610c1d578063bdd718dd14610c30578063bedcf00314610c5057600080fd5b8063978a450911610185578063a3edb86a11610154578063a3edb86a14610a25578063a5aa4aa414610a68578063ac2aa9e414610b4f578063b828aa8314610b6457600080fd5b8063978a45091461096e5780639a7a973c146109b8578063a15947c4146109e5578063a22cb46514610a0557600080fd5b80637c5d0a08116101c15780637c5d0a08146109085780638da5cb5b146109285780639564e8e41461094657806395d89b411461095957600080fd5b8063715018a6146108b357806379502c55146108c85780637b789d97146108f357600080fd5b80632b849158116102cc5780634331f6391161026a5780635ecb16cd116102395780635ecb16cd146108335780636352211e146108535780636f33659f1461087357806370a082311461089357600080fd5b80634331f639146107b95780634a21a2df146107d95780634bde38c8146107ec57806355f804b31461081357600080fd5b80633ccfd60b116102a65780633ccfd60b14610751578063400e3db91461076657806340b7570f1461078657806342842e0e146107a657600080fd5b80632b849158146106f157806332f7c6d4146107115780633386cc4e1461073157600080fd5b80631069143a1161034457806321d5bf241161031357806321d5bf24146105a057806323b872dd1461060757806327a594371461061a5780632a55205a146106b257600080fd5b80631069143a14610495578063109695231461053d578063118fdf5b1461055d57806318160ddd1461057d57600080fd5b8063095ea7b311610380578063095ea7b3146104365780630c6f910b1461044b5780630f7309e81461046b57806310566ef61461048057600080fd5b806301ffc9a7146103a757806306fdde03146103dc578063081812fc146103fe575b600080fd5b3480156103b357600080fd5b506103c76103c2366004614880565b610e42565b60405190151581526020015b60405180910390f35b3480156103e857600080fd5b506103f1610e62565b6040516103d39190614e5a565b34801561040a57600080fd5b5061041e610419366004614758565b610efd565b6040516001600160a01b0390911681526020016103d3565b6104496104443660046145f2565b610f4a565b005b34801561045757600080fd5b50610449610466366004614bbc565b610f75565b34801561047757600080fd5b506103f1610ff0565b34801561048c57600080fd5b5061044961107e565b3480156104a157600080fd5b5060a6546104f49060ff808216916101008104821691620100008204811691630100000081048216916401000000008204811691600160281b8104821691600160301b8204811691600160381b90041688565b604080519815158952961515602089015294151595870195909552911515606086015215156080850152151560a084015290151560c0830152151560e0820152610100016103d3565b34801561054957600080fd5b506104496105583660046148b8565b6110cc565b34801561056957600080fd5b50610449610578366004614841565b611116565b34801561058957600080fd5b506105926112f3565b6040519081526020016103d3565b3480156105ac57600080fd5b506105ef6105bb366004614467565b6001600160a01b039182166000908152609b602090815260408083209390941682529190915220546001600160801b031690565b6040516001600160801b0390911681526020016103d3565b61044961061536600461449f565b611313565b34801561062657600080fd5b5061068b61063536600461444b565b6040805180820190915260008082526020820152506001600160a01b03166000908152609a60209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b0390811682526020938401511692810192909252016103d3565b3480156106be57600080fd5b506106d26106cd366004614c39565b611350565b604080516001600160a01b0390931683526020830191909152016103d3565b3480156106fd57600080fd5b5061044961070c366004614bf0565b6113fe565b34801561071d57600080fd5b5061044961072c3660046148b8565b611451565b34801561073d57600080fd5b5061044961074c3660046146fd565b6114db565b34801561075d57600080fd5b506104496116d5565b34801561077257600080fd5b50610449610781366004614c76565b611746565b34801561079257600080fd5b506104496107a13660046148ea565b611836565b6104496107b436600461449f565b611bfe565b3480156107c557600080fd5b506104496107d436600461461d565b611c35565b6104496107e7366004614aeb565b611c5c565b3480156107f857600080fd5b507386b82972282dd22348374bc63fd21620f7ed847b61041e565b34801561081f57600080fd5b5061044961082e3660046148b8565b611c6a565b34801561083f57600080fd5b5061044961084e36600461464a565b611ca9565b34801561085f57600080fd5b5061041e61086e366004614758565b6121a0565b34801561087f57600080fd5b5061044961088e366004614c5a565b6121ab565b34801561089f57600080fd5b506105926108ae36600461444b565b6121d9565b3480156108bf57600080fd5b50610449612241565b3480156108d457600080fd5b506108dd612255565b6040516103d39a99989796959493929190614e6d565b3480156108ff57600080fd5b506104496123ce565b34801561091457600080fd5b506104496109233660046148b8565b612412565b34801561093457600080fd5b506000546001600160a01b031661041e565b610449610954366004614a52565b612496565b34801561096557600080fd5b506103f16125ff565b34801561097a57600080fd5b506105ef61098936600461444b565b6001600160a01b03166000908152609b602090815260408083208380529091529020546001600160801b031690565b3480156109c457600080fd5b506105926109d3366004614758565b60009081526099602052604090205490565b3480156109f157600080fd5b50610449610a003660046148b8565b612617565b348015610a1157600080fd5b50610449610a2036600461455b565b6126a3565b348015610a3157600080fd5b50610592610a403660046145f2565b6001600160a01b03919091166000908152609860209081526040808320938352929052205490565b348015610a7457600080fd5b50610af0610a83366004614758565b6097602052600090815260409020805460018201546002909201546001600160801b0380831693600160801b938490048216939181169291810463ffffffff90811692600160a01b8304821692600160c01b8104831692600160e01b90910416906001600160a01b031688565b604080516001600160801b03998a1681529789166020890152959097169486019490945263ffffffff92831660608601529082166080850152811660a08401521660c08201526001600160a01b0390911660e0820152610100016103d3565b348015610b5b57600080fd5b506104496126c9565b348015610b7057600080fd5b5060a45460a554610bc0916001600160a01b0381169160ff600160a01b8304811692600160a81b81049091169161ffff600160b01b830416916001600160401b03600160c01b9091048116911686565b604080516001600160a01b03909716875294151560208701529215159385019390935261ffff1660608401526001600160401b0391821660808401521660a082015260c0016103d3565b610449610c183660046144df565b61271b565b610449610c2b366004614985565b612753565b348015610c3c57600080fd5b50610449610c4b366004614770565b6129aa565b348015610c5c57600080fd5b50604080518082018252600080825260209182018190528052609a815281518083019092527fbe6620bd3346e5d7f8387fbec0981aa0d6289d22efa7c935f9ef6841bf2a98c7546001600160801b038082168452600160801b909104169082015261068b565b348015610cce57600080fd5b50610449610cdd366004614588565b612adb565b348015610cee57600080fd5b50610449610cfd3660046148b8565b612ba4565b348015610d0e57600080fd5b506103f1610d1d366004614758565b612c2c565b348015610d2e57600080fd5b50610449610d3d3660046148b8565b612caf565b348015610d4e57600080fd5b50610449610d5d36600461444b565b612d35565b348015610d6e57600080fd5b50610449610d7d3660046148b8565b612d8b565b348015610d8e57600080fd5b506103f1610d9d366004614758565b612e0d565b348015610dae57600080fd5b506103c7610dbd366004614467565b612ed3565b348015610dce57600080fd5b50610449610ddd36600461444b565b612f10565b348015610dee57600080fd5b50610449610dfd3660046148b8565b612f66565b348015610e0e57600080fd5b50610449610e1d36600461444b565b612ff1565b348015610e2e57600080fd5b50610449610e3d366004614b70565b613067565b6000610e4d8261320b565b80610e5c5750610e5c82613259565b92915050565b6060610e6c61328e565b6002018054610e7a906154d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea6906154d7565b8015610ef35780601f10610ec857610100808354040283529160200191610ef3565b820191906000526020600020905b815481529060010190602001808311610ed657829003601f168201915b5050505050905090565b6000610f08826132b2565b610f25576040516333d1c03960e21b815260040160405180910390fd5b610f2d61328e565b60009283526006016020525060409020546001600160a01b031690565b8160a654600160281b900460ff1615610f6657610f66816132fb565b610f70838361333f565b505050565b610f7d61334b565b60a65462010000900460ff1615610fa75760405163249fab5d60e01b815260040160405180910390fd5b61138861ffff82161115610fce576040516306b7c75960e31b815260040160405180910390fd5b60a0805461ffff909216600160e01b0261ffff60e01b19909216919091179055565b60a78054610ffd906154d7565b80601f0160208091040260200160405190810160405280929190818152602001828054611029906154d7565b80156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b505050505081565b61108661334b565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a00181905260a45560a5805467ffffffffffffffff19169055565b6110d461334b565b60a654600160381b900460ff16156110ff5760405163249fab5d60e01b815260040160405180910390fd5b80516111129060a79060208401906141e5565b5050565b61111e61334b565b604080516101008101909152806111386020840184614ba2565b6001600160801b0316815260209081019061115590840184614ba2565b6001600160801b0316815260200160006001600160801b031681526020018260200160208101906111869190614c5a565b63ffffffff1681526020016111a16060840160408501614c5a565b63ffffffff1681526020016111bc6080840160608501614c5a565b63ffffffff168152600060208201526040016111de60a084016080850161444b565b6001600160a01b0390811690915260008581526097602090815260408083208551928601516001600160801b03938416600160801b91851682021782558683015160018301805460608a015160808b015160a08c015160c08d0151959099166001600160a01b03199384161763ffffffff9283169096029590951767ffffffffffffffff60a01b1916600160a01b9582169590950263ffffffff60c01b191694909417600160c01b97851697909702969096176001600160e01b0316600160e01b939092169290920217905560e09095015160029095018054909216949093169390931790925551839185917fe9a0c17645ed78ccc9996259f00297ffc75e6b9d22cd605ccc9992cc8ca3f4c19190a3505050565b600060016112ff61328e565b6001015461130b61328e565b540303919050565b826001600160a01b038116331461133f5760a654600160281b900460ff161561133f5761133f336132fb565b61134a8484846133a5565b50505050565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916113c55750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b6020810151600090612710906113e4906001600160601b031687615251565b6113ee919061520e565b91519350909150505b9250929050565b611407836121a0565b6001600160a01b0316336001600160a01b031614611438576040516359dc379f60e01b815260040160405180910390fd5b6000838152609c6020526040902061134a908383614269565b61145961334b565b60405160200161146890614de8565b604051602081830303815290604052805190602001208160405160200161148f9190614d4c565b60405160208183030381529060405280519060200120146114c357604051635ee88f9760e01b815260040160405180910390fd5b5060a6805464ff000000001916640100000000179055565b60006114e5613594565b604051639b2e2ef360e01b815290915073c081ea8d7972983c46a1e17fe43e44ce78269c0390639b2e2ef39061152c90609d9060a490889088908890609890600401614fa7565b60006040518083038186803b15801561154457600080fd5b505af4158015611558573d6000803e3d6000fd5b5050505060005b8281101561161e5760a4546001600160a01b03166323b872dd3361dead87878681811061159c57634e487b7160e01b600052603260045260246000fd5b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156115f357600080fd5b505af1158015611607573d6000803e3d6000fd5b5050505080806116169061550c565b91505061155f565b5060a454600090600160a81b900460ff166116505760a45461164b90600160b01b900461ffff168461520e565b611668565b60a45461166890600160b01b900461ffff1684615251565b905061167433826135a7565b60a05460a554600160a01b90910463ffffffff166001600160401b03909116101561134a5733600090815260986020908152604080832063313ab93760e11b8452909152812080548392906116ca9084906151d0565b909155505050505050565b6040805160018082528183019092526000916020808301908036833701905050905060008160008151811061171a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505061174381611ca9565b50565b61174e61334b565b60405160200161175d90614de8565b60405160208183030381529060405280519060200120816040516020016117849190614d4c565b60405160208183030381529060405280519060200120146117b857604051635ee88f9760e01b815260040160405180910390fd5b60a654610100900460ff16156117e15760405163249fab5d60e01b815260040160405180910390fd5b6117e9613594565b8263ffffffff16101561180f57604051638a164f6360e01b815260040160405180910390fd5b5060a0805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b60008051602061589a83398151915254610100900460ff1661186b5760008051602061589a8339815191525460ff161561186f565b303b155b6118e65760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a656400000000000000000060648201526084015b60405180910390fd5b60008051602061589a83398151915254610100900460ff161580156119225760008051602061589a833981519152805461ffff19166101011790555b61192c85856136db565b61138861193f60e0850160c08601614bbc565b61ffff161180611964575061138861195e610100850160e08601614bbc565b61ffff16115b8061198457506101f461197e610100850160e08601614bbc565b61ffff16105b806119af575061138861199b610120850185615140565b6119a9906020810190614bbc565b61ffff16115b806119d2575060006119c7604085016020860161444b565b6001600160a01b0316145b806119f057506119e860c0840160a08501614c5a565b63ffffffff16155b15611a0e576040516306b7c75960e31b815260040160405180910390fd5b60015b611a1f610120850185615140565b611a2d9060208101906150b5565b9050811015611b7a57611388611a47610120860186615140565b611a559060208101906150b5565b83818110611a7357634e487b7160e01b600052603260045260246000fd5b9050604002016020016020810190611a8b9190614bbc565b61ffff161180611b4a5750611aa4610120850185615140565b611ab29060208101906150b5565b611abd600184615298565b818110611ada57634e487b7160e01b600052603260045260246000fd5b611af09260206040909202019081019150614bbc565b61ffff16611b02610120860186615140565b611b109060208101906150b5565b83818110611b2e57634e487b7160e01b600052603260045260246000fd5b611b449260206040909202019081019150614bbc565b61ffff16115b15611b68576040516306b7c75960e31b815260040160405180910390fd5b80611b728161550c565b915050611a11565b5082609d611b8882826155b0565b905050611b93613719565b609f546001600160a01b031615611bc657609f5460a154611bc1916001600160a01b03169061ffff16611c35565b611bd8565b60a154611bd890839061ffff16611c35565b8015611bf75760008051602061589a833981519152805461ff00191690555b5050505050565b826001600160a01b0381163314611c2a5760a654600160281b900460ff1615611c2a57611c2a336132fb565b61134a848484613755565b611c3d61334b565b60a1805461ffff191661ffff8316908117909155611112908390613770565b611bf7858533868686612496565b611c7261334b565b60a65460ff1615611c965760405163249fab5d60e01b815260040160405180910390fd5b805161111290609d9060208401906141e5565b60005b8151811015611112576000828281518110611cd757634e487b7160e01b600052603260045260246000fd5b602002602001015190506000611cf56000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611d1e5750609f546001600160a01b031633145b80611d3c5750337386b82972282dd22348374bc63fd21620f7ed847b145b15611e72576001600160a01b0382166000908152609a60209081526040918290208251808401909352546001600160801b038082168452600160801b9091041690820152611d926000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480611dbb5750609f546001600160a01b031633145b15611e1757805160408051808201825260008082526020808601516001600160801b039081168285019081526001600160a01b038a168452609a90925293909120915190518316600160801b0292169190911790559150611e6c565b60208082015160408051808201825284516001600160801b03908116825260008286018181526001600160a01b038a168252609a90965292909220905193518216600160801b02939091169290921790915591505b50611eb9565b50336000908152609b602090815260408083206001600160a01b0385168452909152902080546fffffffffffffffffffffffffffffffff1981169091556001600160801b03165b6001600160801b038116611ee0576040516321cd723f60e21b815260040160405180910390fd5b6001600160a01b038216611ff657600080546001600160a01b031633148015611f135750609f546001600160a01b031615155b15611f7e57609f546040516001600160a01b03909116906001600160801b03841690600081818185875af1925050503d8060008114611f6e576040519150601f19603f3d011682016040523d82523d6000602084013e611f73565b606091505b505080915050611fd2565b60405133906001600160801b03841690600081818185875af1925050503d8060008114611fc7576040519150601f19603f3d011682016040523d82523d6000602084013e611fcc565b606091505b50909150505b80611ff0576040516312171d8360e31b815260040160405180910390fd5b50612148565b816120096000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480156120335750609f546001600160a01b031615155b156120c457609f5460405163a9059cbb60e01b81526001600160a01b038381169263a9059cbb9261206c92909116908690600401614e38565b602060405180830381600087803b15801561208657600080fd5b505af115801561209a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120be919061473c565b50612146565b60405163a9059cbb60e01b81526001600160a01b0382169063a9059cbb906120f29033908690600401614e38565b602060405180830381600087803b15801561210c57600080fd5b505af1158015612120573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612144919061473c565b505b505b336001600160a01b03167f02128911bc7070fd6c100b116c2dd9a3bb6bf132d5259a65ca8d0c86ccd78f498383604051612183929190614e38565b60405180910390a2505080806121989061550c565b915050611cac565b6000610e5c8261386d565b6121b361334b565b60a0805463ffffffff909216600160c01b0263ffffffff60c01b19909216919091179055565b60006001600160a01b038216612202576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b0361221261328e565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b61224961334b565b6122536000613918565b565b609d80548190612264906154d7565b80601f0160208091040260200160405190810160405280929190818152602001828054612290906154d7565b80156122dd5780601f106122b2576101008083540402835291602001916122dd565b820191906000526020600020905b8154815290600101906020018083116122c057829003601f168201915b505050600184015460028501546003860154600487015460408051808201825260058a01805461ffff908116835260068c01805485516020828102820181019097528181529c9d6001600160a01b039a8b169d998b169c509988169a5063ffffffff600160a01b890481169a600160c01b8a0490911699600160e01b8a04851699600160f01b90048516989094169690959493818601939092909160009084015b828210156123c1576000848152602090819020604080518082019091529084015461ffff808216835262010000909104168183015282526001909201910161237e565b505050508152505090508a565b6123d661334b565b60a654600160301b900460ff16156124015760405163249fab5d60e01b815260040160405180910390fd5b60a6805465ff000000000019169055565b61241a61334b565b60405160200161242990614de8565b60405160208183030381529060405280519060200120816040516020016124509190614d4c565b604051602081830303815290604052805190602001201461248457604051635ee88f9760e01b815260040160405180910390fd5b5060a6805461ff001916610100179055565b85356000908152609760205260408120906124af613594565b905073c081ea8d7972983c46a1e17fe43e44ce78269c03638c42a15083609d8b8b6124e26000546001600160a01b031690565b8b88609860998e8e6040518c63ffffffff1660e01b81526004016125109b9a99989796959493929190614fdc565b60006040518083038186803b15801561252857600080fd5b505af415801561253c573d6000803e3d6000fd5b5050505061254a86886135a7565b600182015463ffffffff600160c01b82048116600160a01b90920416101561259d573360009081526098602090815260408083208b358452909152812080548992906125979084906151d0565b90915550505b60a0546001830154600160a01b90910463ffffffff908116600160c01b9092041610156125ea578735600090815260996020526040812080548992906125e49084906151d0565b90915550505b6125f5888689613968565b5050505050505050565b606061260961328e565b6003018054610e7a906154d7565b61261f61334b565b60405160200161262e90614de8565b60405160208183030381529060405280519060200120816040516020016126559190614d4c565b604051602081830303815290604052805190602001201461268957604051635ee88f9760e01b815260040160405180910390fd5b5060a6805467ff000000000000001916600160381b179055565b8160a654600160281b900460ff16156126bf576126bf816132fb565b610f708383613dac565b6126d161334b565b60a654600160301b900460ff16156126fc5760405163249fab5d60e01b815260040160405180910390fd5b612704613e29565b60a6805465ff00000000001916600160281b179055565b836001600160a01b03811633146127475760a654600160281b900460ff161561274757612747336132fb565b611bf785858585613e48565b838614612773576040516306b7c75960e31b815260040160405180910390fd5b6000805b858110156127c55786868281811061279f57634e487b7160e01b600052603260045260246000fd5b90506020020135826127b191906151d0565b9150806127bd8161550c565b915050612777565b5088356000908152609760205260408120906127df613594565b905073c081ea8d7972983c46a1e17fe43e44ce78269c03638c42a15083609d8e876128126000546001600160a01b031690565b8c88609860998f8f6040518c63ffffffff1660e01b81526004016128409b9a99989796959493929190614fdc565b60006040518083038186803b15801561285857600080fd5b505af415801561286c573d6000803e3d6000fd5b5050505060005b898110156128f1576128df8b8b8381811061289e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906128b3919061444b565b8a8a848181106128d357634e487b7160e01b600052603260045260246000fd5b905060200201356135a7565b806128e98161550c565b915050612873565b50600182015463ffffffff600160c01b82048116600160a01b909204161015612945573360009081526098602090815260408083208e3584529091528120805485929061293f9084906151d0565b90915550505b60a0546001830154600160a01b90910463ffffffff908116600160c01b909204161015612992578a356000908152609960205260408120805485929061298c9084906151d0565b90915550505b61299d8b8785613968565b5050505050505050505050565b6129b261334b565b42816060015163ffffffff1610156129d15763ffffffff421660608201525b60008381526097602090815260408083208451928501516001600160801b03938416600160801b918516820217825585830151600183018054606089015160808a015160a08b015160c08c0151959099166001600160a01b03199384161763ffffffff9283169096029590951767ffffffffffffffff60a01b1916600160a01b9582169590950263ffffffff60c01b191694909417600160c01b97851697909702969096176001600160e01b0316600160e01b939092169290920217905560e0850151600290910180549093166001600160a01b039091161790915551839185917fe9a0c17645ed78ccc9996259f00297ffc75e6b9d22cd605ccc9992cc8ca3f4c19190a3505050565b612ae361334b565b6040805160c0810182526001600160a01b03969096168087526001602088015294151590860181905261ffff93909316606086018190526001600160401b03928316608087018190529190921660a090950185905260a48054600160a01b6001600160a81b03199091169095179490941762ffffff60a81b1916600160a81b90930261ffff60b01b191692909217600160b01b909102176001600160c01b0316600160c01b90910217905560a5805467ffffffffffffffff19169091179055565b612bac61334b565b604051602001612bbb90614de8565b6040516020818303038152906040528051906020012081604051602001612be29190614d4c565b6040516020818303038152906040528051906020012014612c1657604051635ee88f9760e01b815260040160405180910390fd5b5060a6805463ff00000019166301000000179055565b6060612c37826132b2565b612c5457604051630a14c4b560e41b815260040160405180910390fd5b609d8054612c61906154d7565b15159050612c7e5760405180602001604052806000815250610e5c565b609d612c8983613e8c565b604051602001612c9a929190614d68565b60405160208183030381529060405292915050565b612cb761334b565b604051602001612cc690614de8565b6040516020818303038152906040528051906020012081604051602001612ced9190614d4c565b6040516020818303038152906040528051906020012014612d2157604051635ee88f9760e01b815260040160405180910390fd5b5060a6805462ff0000191662010000179055565b337386b82972282dd22348374bc63fd21620f7ed847b14612d695760405163016bdfed60e71b815260040160405180910390fd5b60a080546001600160a01b0319166001600160a01b0392909216919091179055565b612d9361334b565b604051602001612da290614de8565b6040516020818303038152906040528051906020012081604051602001612dc99190614d4c565b6040516020818303038152906040528051906020012014612dfd57604051635ee88f9760e01b815260040160405180910390fd5b5060a6805460ff19166001179055565b6060612e18826132b2565b612e3557604051630a14c4b560e41b815260040160405180910390fd5b6000828152609c602052604090208054612e4e906154d7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e7a906154d7565b8015612ec75780601f10612e9c57610100808354040283529160200191612ec7565b820191906000526020600020905b815481529060010190602001808311612eaa57829003601f168201915b50505050509050919050565b6000612edd61328e565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b612f1861334b565b60a654640100000000900460ff1615612f445760405163249fab5d60e01b815260040160405180910390fd5b609f80546001600160a01b0319166001600160a01b0392909216919091179055565b612f6e61334b565b604051602001612f7d90614de8565b6040516020818303038152906040528051906020012081604051602001612fa49190614d4c565b6040516020818303038152906040528051906020012014612fd857604051635ee88f9760e01b815260040160405180910390fd5b5060a6805466ff0000000000001916600160301b179055565b612ff961334b565b6001600160a01b03811661305e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016118dd565b61174381613918565b61306f61334b565b60a6546301000000900460ff161561309a5760405163249fab5d60e01b815260040160405180910390fd5b6113886130aa6020830183614bbc565b61ffff1611156130cd576040516306b7c75960e31b815260040160405180910390fd5b60015b6130dd60208301836150b5565b90508110156131fd576113886130f660208401846150b5565b8381811061311457634e487b7160e01b600052603260045260246000fd5b905060400201602001602081019061312c9190614bbc565b61ffff1611806131cd575061314460208301836150b5565b61314f600184615298565b81811061316c57634e487b7160e01b600052603260045260246000fd5b6131829260206040909202019081019150614bbc565b61ffff1661319360208401846150b5565b838181106131b157634e487b7160e01b600052603260045260246000fd5b6131c79260206040909202019081019150614bbc565b61ffff16115b156131eb576040516306b7c75960e31b815260040160405180910390fd5b806131f58161550c565b9150506130d0565b508060a2610f70828261571a565b60006301ffc9a760e01b6001600160e01b03198316148061323c57506380ac58cd60e01b6001600160e01b03198316145b80610e5c5750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b1480610e5c57506301ffc9a760e01b6001600160e01b0319831614610e5c565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156132cc57506132c861328e565b5482105b8015610e5c5750600160e01b6132e061328e565b60008481526004919091016020526040902054161592915050565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa613337573d6000803e3d6000fd5b6000603a5250565b61111282826001613eda565b6000546001600160a01b031633146122535760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016118dd565b60006133b08261386d565b9050836001600160a01b0316816001600160a01b0316146133e35760405162a1148160e81b815260040160405180910390fd5b6000806133ef84613f8f565b9150915061341481876133ff3390565b6001600160a01b039081169116811491141790565b61343f576134228633612ed3565b61343f57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661346657604051633a954ecd60e21b815260040160405180910390fd5b801561347157600082555b61347961328e565b6001600160a01b03871660009081526005919091016020526040902080546000190190556134a561328e565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b176134dc61328e565b60008681526004919091016020526040902055600160e11b831661354b576001840161350661328e565b600082815260049190910160205260409020546135495761352561328e565b548114613549578361353561328e565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b600060016135a061328e565b5403919050565b60006135b161328e565b549050816135d25760405163b562e8dd60e01b815260040160405180910390fd5b6801000000000000000182026135e661328e565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b171761362161328e565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146136ab57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101613673565b50816136c957604051622e076360e81b815260040160405180910390fd5b806136d261328e565b5550610f709050565b60008051602061589a83398151915254610100900460ff1661370f5760405162461bcd60e51b81526004016118dd90614f53565b6111128282613fb7565b60008051602061589a83398151915254610100900460ff1661374d5760405162461bcd60e51b81526004016118dd90614f53565b61225361403a565b610f708383836040518060200160405280600081525061271b565b6127106001600160601b03821611156137de5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084016118dd565b6001600160a01b0382166138345760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016118dd565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b6000816001116138ff5761387f61328e565b600083815260049190910160205260409020549050600160e01b81166138ff57806138fa576138ac61328e565b5482106138cc57604051636f96cda160e11b815260040160405180910390fd5b6138d461328e565b60001990920160008181526004939093016020526040909220549050806138fa576138cc565b919050565b604051636f96cda160e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8235600090815260976020526040902060028101546001600160a01b0316348115613a3257604051633e09927360e21b81526004810184905260a26024820152604481018590526001600160a01b0386161515606482015273c081ea8d7972983c46a1e17fe43e44ce78269c039063f82649cc9060840160206040518083038186803b1580156139f757600080fd5b505af4158015613a0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2f9190614bd8565b90505b60006001600160a01b03861615613b3d5760a05461271090613a5f90600160e01b900461ffff1684615222565b613a6991906151e8565b6001600160a01b038088166000908152609b60209081526040808320938816835292905290812080549293508392909190613aae9084906001600160801b03166151ae565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550856001600160a01b03167f8abfbe92bb62ff992ef6347c68d007f25a6e5aea2ad2f05e89f3486947cc0b20848388604051613b34939291906001600160a01b039390931683526001600160801b03919091166020830152604082015260600190565b60405180910390a25b60a0546000906001600160a01b031615613bf15760a05461271090600290613b7090600160f01b900461ffff1686615222565b613b7a91906151e8565b613b8491906151e8565b60a0546001600160a01b039081166000908152609b60209081526040808320938916835292905290812080549293508392909190613bcc9084906001600160801b03166151ae565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505b6001600160a01b0384166000908152609a602090815260408083208151808301909252546001600160801b038082168352600160801b909104169181019190915260a054909190839061271090613c5390600160f01b900461ffff1688615222565b613c5d91906151e8565b613c679190615270565b905060008382613c778789615270565b613c819190615270565b613c8b9190615270565b90506040518060400160405280828560000151613ca891906151ae565b6001600160801b03168152602001838560200151613cc691906151ae565b6001600160801b039081169091526001600160a01b0389166000818152609a60209081526040909120845194909101518316600160801b02939092169290921790551561299d576040516323b872dd60e01b81523360048201523060248201526001600160801b038716604482015287906001600160a01b038216906323b872dd90606401602060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9d919061473c565b50505050505050505050505050565b80613db561328e565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612253733cc6cdda760b79bafa08df41ecfa224f810dceb66001614077565b613e53848484611313565b6001600160a01b0383163b1561134a57613e6f848484846140ed565b61134a576040516368d2bf6b60e11b815260040160405180910390fd5b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a900480613ec357613ec8565b613ea6565b50819003601f19909101908152919050565b6000613ee5836121a0565b90508115613f2457336001600160a01b03821614613f2457613f078133612ed3565b613f24576040516367d9dca160e11b815260040160405180910390fd5b83613f2d61328e565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b6000806000613f9c61328e565b60009485526006016020525050604090912080549092909150565b60008051602061589a83398151915254610100900460ff16613feb5760405162461bcd60e51b81526004016118dd90614f53565b81613ff461328e565b600201908051906020019061400a9291906141e5565b508061401461328e565b600301908051906020019061402a9291906141e5565b50600161403561328e565b555050565b60008051602061589a83398151915254610100900460ff1661406e5760405162461bcd60e51b81526004016118dd90614f53565b61225333613918565b6001600160a01b0390911690637d3e3dbe816140a4578261409d5750634420e4866140a4565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af16140e3578060005160e01c14156140e357600080fd5b5060006024525050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290614122903390899088908890600401614dfb565b602060405180830381600087803b15801561413c57600080fd5b505af192505050801561416c575060408051601f3d908101601f191682019092526141699181019061489c565b60015b6141c7573d80801561419a576040519150601f19603f3d011682016040523d82523d6000602084013e61419f565b606091505b5080516141bf576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b8280546141f1906154d7565b90600052602060002090601f0160209004810192826142135760008555614259565b82601f1061422c57805160ff1916838001178555614259565b82800160010185558215614259579182015b8281111561425957825182559160200191906001019061423e565b506142659291506142dd565b5090565b828054614275906154d7565b90600052602060002090601f0160209004810192826142975760008555614259565b82601f106142b05782800160ff19823516178555614259565b82800160010185558215614259579182015b828111156142595782358255916020019190600101906142c2565b5b8082111561426557600081556001016142de565b60006001600160401b0383111561430b5761430b615553565b61431e601f8401601f191660200161517e565b905082815283838301111561433257600080fd5b828260208301376000602084830101529392505050565b80356138fa8161583e565b60008083601f840112614365578182fd5b5081356001600160401b0381111561437b578182fd5b6020830191508360208260051b85010111156113f757600080fd5b60008083601f8401126143a7578182fd5b5081356001600160401b038111156143bd578182fd5b6020830191508360208285010111156113f757600080fd5b600082601f8301126143e5578081fd5b6143f4838335602085016142f2565b9392505050565b60006040828403121561440c578081fd5b50919050565b80356001600160801b03811681146138fa57600080fd5b80356138fa81615887565b80356001600160401b03811681146138fa57600080fd5b60006020828403121561445c578081fd5b81356143f48161583e565b60008060408385031215614479578081fd5b82356144848161583e565b915060208301356144948161583e565b809150509250929050565b6000806000606084860312156144b3578081fd5b83356144be8161583e565b925060208401356144ce8161583e565b929592945050506040919091013590565b600080600080608085870312156144f4578182fd5b84356144ff8161583e565b9350602085013561450f8161583e565b92506040850135915060608501356001600160401b03811115614530578182fd5b8501601f81018713614540578182fd5b61454f878235602084016142f2565b91505092959194509250565b6000806040838503121561456d578182fd5b82356145788161583e565b9150602083013561449481615853565b600080600080600060a0868803121561459f578283fd5b85356145aa8161583e565b945060208601356145ba81615853565b935060408601356145ca81615877565b92506145d860608701614434565b91506145e660808701614434565b90509295509295909350565b60008060408385031215614604578182fd5b823561460f8161583e565b946020939093013593505050565b6000806040838503121561462f578182fd5b823561463a8161583e565b9150602083013561449481615877565b6000602080838503121561465c578182fd5b82356001600160401b0380821115614672578384fd5b818501915085601f830112614685578384fd5b81358181111561469757614697615553565b8060051b91506146a884830161517e565b8181528481019084860184860187018a10156146c2578788fd5b8795505b838610156146f057803594506146db8561583e565b848352600195909501949186019186016146c6565b5098975050505050505050565b6000806020838503121561470f578182fd5b82356001600160401b03811115614724578283fd5b61473085828601614354565b90969095509350505050565b60006020828403121561474d578081fd5b81516143f481615853565b600060208284031215614769578081fd5b5035919050565b6000806000838503610140811215614786578182fd5b843593506020850135925061010080603f19830112156147a4578283fd5b6147ac615155565b91506147ba60408701614412565b82526147c860608701614412565b60208301526147d960808701614412565b604083015260a08601356147ec81615887565b60608301526147fd60c08701614429565b608083015261480e60e08701614429565b60a083015261481e818701614429565b60c0830152506148316101208601614349565b60e0820152809150509250925092565b600080600083850360e0811215614856578182fd5b843593506020850135925060a0603f1982011215614872578182fd5b506040840190509250925092565b600060208284031215614891578081fd5b81356143f481615861565b6000602082840312156148ad578081fd5b81516143f481615861565b6000602082840312156148c9578081fd5b81356001600160401b038111156148de578182fd5b6141dd848285016143d5565b600080600080608085870312156148ff578182fd5b84356001600160401b0380821115614915578384fd5b614921888389016143d5565b95506020870135915080821115614936578384fd5b614942888389016143d5565b94506040870135915080821115614957578384fd5b508501610140818803121561496a578283fd5b9150606085013561497a8161583e565b939692955090935050565b60008060008060008060008060a0898b0312156149a0578586fd5b88356001600160401b03808211156149b6578788fd5b6149c28c838d016143fb565b995060208b01359150808211156149d7578788fd5b6149e38c838d01614354565b909950975060408b01359150808211156149fb578485fd5b614a078c838d01614354565b909750955060608b01359150614a1c8261583e565b90935060808a01359080821115614a31578384fd5b50614a3e8b828c01614396565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215614a6a578384fd5b86356001600160401b0380821115614a80578586fd5b614a8c8a838b016143fb565b97506020890135965060408901359150614aa58261583e565b909450606088013590614ab78261583e565b90935060808801359080821115614acc578384fd5b50614ad989828a01614396565b979a9699509497509295939492505050565b600080600080600060808688031215614b02578283fd5b85356001600160401b0380821115614b18578485fd5b614b2489838a016143fb565b96506020880135955060408801359150614b3d8261583e565b90935060608701359080821115614b52578283fd5b50614b5f88828901614396565b969995985093965092949392505050565b600060208284031215614b81578081fd5b81356001600160401b03811115614b96578182fd5b6141dd848285016143fb565b600060208284031215614bb3578081fd5b6143f482614412565b600060208284031215614bcd578081fd5b81356143f481615877565b600060208284031215614be9578081fd5b5051919050565b600080600060408486031215614c04578081fd5b8335925060208401356001600160401b03811115614c20578182fd5b614c2c86828701614396565b9497909650939450505050565b60008060408385031215614c4b578182fd5b50508035926020909101359150565b600060208284031215614c6b578081fd5b81356143f481615887565b60008060408385031215614c88578182fd5b8235614c9381615887565b915060208301356001600160401b03811115614cad578182fd5b614cb9858286016143d5565b9150509250929050565b81835260006001600160fb1b03831115614cdb578081fd5b8260051b80836020870137939093016020019283525090919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60008151808452614d388160208601602086016153c2565b601f01601f19169290920160200192915050565b60008251614d5e8184602087016153c2565b9190910192915050565b6000808454614d76816154d7565b60018281168015614d8e5760018114614d9f57614dcb565b60ff19841687528287019450614dcb565b8886526020808720875b85811015614dc25781548a820152908401908201614da9565b50505082870194505b505050508351614ddf8183602088016153c2565b01949350505050565b663337b932bb32b960c91b815260070190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614e2e90830184614d20565b9695505050505050565b6001600160a01b039290921682526001600160801b0316602082015260400190565b6020815260006143f46020830184614d20565b6000610140808352614e818184018e614d20565b9050602060018060a01b03808e16828601526040818e1681870152818d16606087015263ffffffff9150818c166080870152818b1660a087015261ffff9150818a1660c087015281891660e087015281881661010087015285840361012087015280840182885116855283880151828587015281815180845260608801915086830197508893505b80841015614f39578751805187168352878101518716888401529787019760019490940193925090840190614f09565b50809750505050505050509b9a5050505050505050505050565b60208082526034908201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604082015273206973206e6f7420696e697469616c697a696e6760601b606082015260800190565b86815285602082015260a060408201526000614fc760a083018688614cc3565b60608301949094525060800152949350505050565b60006101408d83528c60208401528060408401528b35818401525060208b0135601e198c360301811261500d578182fd5b8b0180356001600160401b03811115615024578283fd5b8060051b36038d1315615035578283fd5b604061016085015261504f61018085018260208501614cc3565b9150508a606084015261506d608084018b6001600160a01b03169052565b6001600160a01b03891660a08401528760c08401528660e0840152856101008401528281036101208401526150a3818587614cf7565b9e9d5050505050505050505050505050565b6000808335601e198436030181126150cb578283fd5b8301803591506001600160401b038211156150e4578283fd5b6020019150600681901b36038213156113f757600080fd5b6000808335601e19843603018112615112578283fd5b8301803591506001600160401b0382111561512b578283fd5b6020019150368190038213156113f757600080fd5b60008235603e19833603018112614d5e578182fd5b60405161010081016001600160401b038111828210171561517857615178615553565b60405290565b604051601f8201601f191681016001600160401b03811182821017156151a6576151a6615553565b604052919050565b60006001600160801b03808316818516808303821115614ddf57614ddf615527565b600082198211156151e3576151e3615527565b500190565b60006001600160801b03808416806152025761520261553d565b92169190910492915050565b60008261521d5761521d61553d565b500490565b60006001600160801b038083168185168183048111821515161561524857615248615527565b02949350505050565b600081600019048311821515161561526b5761526b615527565b500290565b60006001600160801b038381169083168181101561529057615290615527565b039392505050565b6000828210156152aa576152aa615527565b500390565b5b8181101561111257600081556001016152b0565b6001600160401b038311156152db576152db615553565b6152e581546154d7565b600080601f8611601f8411818117156153045760008681526020902092505b801561533357601f880160051c8301602089101561531f5750825b615331601f870160051c8501826152af565b505b5080600181146153675760009450871561534e578387013594505b600188901b60001960038a901b1c1986161786556125f5565b601f198816945082845b868110156153915788860135825560209586019560019092019101615371565b50888610156153ae5760001960f88a60031b161c19858901351681555b5060018860011b0186555050505050505050565b60005b838110156153dd5781810151838201526020016153c5565b8381111561134a5750506000910152565b81356153f981615877565b815461ffff191661ffff82161782555060018082016020840135601e1985360301811261542557600080fd5b840180356001600160401b0381111561543d57600080fd5b6020820191508060061b360382131561545557600080fd5b600160401b81111561546957615469615553565b82548184558082101561549e576000848152602081208381019083015b8082101561549a5782825590870190615486565b5050505b50600092835260208320925b818110156154ce576154bc83856157fa565b928401926040929092019184016154aa565b50505050505050565b600181811c908216806154eb57607f821691505b6020821081141561440c57634e487b7160e01b600052602260045260246000fd5b600060001982141561552057615520615527565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60008135610e5c8161583e565b60008135610e5c81615877565b60008135610e5c81615887565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6155ba82836150fc565b6155c58183856152c4565b50506155df6155d660208401615569565b60018301615590565b6155f76155ee60408401615569565b60028301615590565b6003810161561061560a60608501615569565b82615590565b61564361561f60808501615583565b82805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b61567661565260a08501615583565b82805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b6156a561568560c08501615576565b82805461ffff60e01b191660e09290921b61ffff60e01b16919091179055565b6156d86156b460e08501615576565b8280546001600160f01b031660f09290921b6001600160f01b031916919091179055565b506157006156e96101008401615576565b6004830161ffff821661ffff198254161781555050565b611112615711610120840184615140565b600583016153ee565b813561572581615877565b815461ffff191661ffff82161782555060018082016020840135601e1985360301811261575157600080fd5b840180356001600160401b0381111561576957600080fd5b6020820191508060061b360382131561578157600080fd5b600160401b81111561579557615795615553565b8254818455808210156157ca576000848152602081208381019083015b808210156157c657828255908701906157b2565b5050505b50600092835260208320925b818110156154ce576157e883856157fa565b928401926040929092019184016157d6565b813561580581615877565b815461ffff191661ffff821617825550602082013561582381615877565b815463ffff0000191660109190911b63ffff00001617905550565b6001600160a01b038116811461174357600080fd5b801515811461174357600080fd5b6001600160e01b03198116811461174357600080fd5b61ffff8116811461174357600080fd5b63ffffffff8116811461174357600080fdfeee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa2646970667358221220155efea3b0faf6d65819368752fd46b8a6990582364c8436e39ef8ced2ecc05864736f6c63430008040033