0 txs
136 calls
constructor
No constructor.
functions
getAbridgedVector
viewfunction getAbridgedVector(uint256 vectorId) view returns (tuple)
getAbridgedVectorMetadata
viewfunction getAbridgedVectorMetadata(uint256 vectorId) view returns (bool, uint128)
getNumClaimedPerUserOffchainVector
viewfunction getNumClaimedPerUserOffchainVector(bytes32 vectorId, address user) view returns (uint256)
isNonceUsed
viewfunction isNonceUsed(bytes32 vectorId, bytes32 nonce) view returns (bool)
isPlatformExecutor
viewfunction isPlatformExecutor(address _executor) view returns (bool)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
mechanicVectorMetadata
viewfunction mechanicVectorMetadata(bytes32) view returns (address contractAddress, uint96 editionId, address mechanic, bool isEditionBased, bool isChoose, bool paused)
offchainVectorsClaimState
viewfunction offchainVectorsClaimState(bytes32) view returns (uint256 numClaimed)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
userClaims
viewfunction userClaims(uint256, address) view returns (uint64)
vectorMutabilities
viewfunction vectorMutabilities(uint256) view returns (uint8 updatesFrozen, uint8 deleteFrozen, uint8 pausesFrozen)
vectors
viewfunction vectors(uint256) view returns (address contractAddress, address currency, address paymentRecipient, uint256 startTimestamp, uint256 endTimestamp, uint256 pricePerToken, uint64 tokenLimitPerTx, uint64 maxTotalClaimableViaVector, uint64 maxUserClaimableViaVector, uint64 totalClaimedViaVector, bytes32 allowlistRoot, uint8 paused)
vectorToEditionId
viewfunction vectorToEditionId(uint256) view returns (uint256)
verifyClaim
viewfunction verifyClaim(tuple claim, bytes signature, address expectedMsgSender) view returns (bool)
addOrDeprecatePlatformExecutor
nonpayablefunction addOrDeprecatePlatformExecutor(address _executor)
createAbridgedVector
nonpayablefunction createAbridgedVector(tuple _vector)
creatorReservesMint
payablefunction creatorReservesMint(address collection, bool isEditionBased, uint256 editionId, uint256 numToMint, uint256[] tokenIds, bool isCollectorsChoice, address recipient) payable
gatedNumMint
payablefunction gatedNumMint(tuple claim, bytes claimSignature, address mintRecipient, bool isEditionBased) payable
gatedSeriesMintChooseToken
payablefunction gatedSeriesMintChooseToken(tuple claim, bytes claimSignature, address mintRecipient, uint256[] tokenIds) payable
initialize
nonpayablefunction initialize(address platform, address _owner, address trustedForwarder, address initialExecutor, uint256 initialPlatformMintFee)
mechanicMintChoose
payablefunction mechanicMintChoose(bytes32 mechanicVectorId, address recipient, uint256[] tokenIds, bytes data) payable
mechanicMintNum
payablefunction mechanicMintNum(bytes32 mechanicVectorId, address recipient, uint32 numToMint, bytes data) payable
registerMechanicVector
nonpayablefunction registerMechanicVector(tuple _mechanicVectorMetadata, uint96 seed, bytes vectorData)
renounceOwnership
nonpayablefunction renounceOwnership()
setAbridgedVectorMetadata
nonpayablefunction setAbridgedVectorMetadata(uint256 vectorId, bool pause, uint128 flexibleData)
setPauseOnMechanicMintVector
nonpayablefunction setPauseOnMechanicMintVector(bytes32 mechanicVectorId, bool pause)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateAbridgedVector
nonpayablefunction updateAbridgedVector(uint256 vectorId, tuple _newVector, tuple updateConfig, bool pause, uint128 flexibleData)
updatePlatformAndMintFeeOracle
nonpayablefunction updatePlatformAndMintFeeOracle(address newPlatform, address newOracle, address gaslessMechanic)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
vectorMint721
payablefunction vectorMint721(uint256 vectorId, uint48 numTokensToMint, address mintRecipient) payable
withdrawNativeGasToken
nonpayablefunction withdrawNativeGasToken(uint256 amountToWithdraw)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ChooseTokenMint
event ChooseTokenMint(bytes32 indexed vectorId, address indexed contractAddress, bool indexed onChainVector, uint256[] tokenIds)
CreatorReservesChooseMint
event CreatorReservesChooseMint(address indexed contractAddress, uint256[] tokenIds)
CreatorReservesNumMint
event CreatorReservesNumMint(address indexed contractAddress, bool indexed isEditionBased, uint256 indexed editionId, uint256 numMinted)
CreatorRewardPayout
event CreatorRewardPayout(bytes32 indexed vectorId, address indexed currency, address indexed rewardRecipient, uint256 amount)
EditionVectorCreated
event EditionVectorCreated(uint256 indexed vectorId, uint48 indexed editionId, address indexed contractAddress)
ERC20Payment
event ERC20Payment(address indexed currency, address indexed paymentRecipient, bytes32 indexed vectorId, address payer, uint256 amountToCreator, uint32 percentageBPSOfTotal)
Initialized
event Initialized(uint8 version)
MechanicVectorPauseSet
event MechanicVectorPauseSet(bytes32 indexed mechanicVectorId, bool indexed paused)
MechanicVectorRegistered
event MechanicVectorRegistered(bytes32 indexed mechanicVectorId, address indexed mechanic, address indexed contractAddress, uint256 editionId, bool isEditionBased)
NativeGasTokenPayment
event NativeGasTokenPayment(address indexed paymentRecipient, bytes32 indexed vectorId, uint256 amountToCreator, uint32 percentageBPSOfTotal)
NumTokenMint
event NumTokenMint(bytes32 indexed vectorId, address indexed contractAddress, bool indexed onChainVector, uint256 numMinted)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlatformExecutorChanged
event PlatformExecutorChanged(address indexed executor, bool indexed added)
PlatformMintFeeUpdated
event PlatformMintFeeUpdated(uint256 indexed newPlatformMintFee)
SeriesVectorCreated
event SeriesVectorCreated(uint256 indexed vectorId, address indexed contractAddress)
Upgraded
event Upgraded(address indexed implementation)
VectorDeleted
event VectorDeleted(uint256 indexed vectorId)
VectorMetadataSet
event VectorMetadataSet(uint256 indexed vectorId, bool indexed paused, uint128 indexed flexibleData)
VectorUpdated
event VectorUpdated(uint256 indexed vectorId)
errors
AllowlistInvalid
error AllowlistInvalid()
AlreadyRegisteredWithId
error AlreadyRegisteredWithId()
CurrencyTypeInvalid
error CurrencyTypeInvalid()
EtherSendFailed
error EtherSendFailed()
InvalidClaim
error InvalidClaim()
InvalidExecutorChanged
error InvalidExecutorChanged()
InvalidMechanic
error InvalidMechanic()
InvalidPaymentAmount
error InvalidPaymentAmount()
InvalidTotalClaimed
error InvalidTotalClaimed()
MechanicPaused
error MechanicPaused()
MintFeeTooLow
error MintFeeTooLow()
MintPaused
error MintPaused()
OnchainVectorMintGuardFailed
error OnchainVectorMintGuardFailed()
SenderNotClaimer
error SenderNotClaimer()
SenderNotDirectEOA
error SenderNotDirectEOA()
Unauthorized
error Unauthorized()
UnauthorizedGaslessRelayer
error UnauthorizedGaslessRelayer()
UnsafeMintRecipient
error UnsafeMintRecipient()
VectorUpdateActionFrozen
error VectorUpdateActionFrozen()
VectorWrongCollectionType
error VectorWrongCollectionType()
creation bytecode
0x60a06040523060805234801561001457600080fd5b50608051615f946200004d600039600081816119ee01528181611a3701528181611bf001528181611c300152611de10152615f946000f3fe6080604052600436106101895760003560e01c8063041050181461018e57806306056f831461024f5780630dbb18a1146102645780631d9165aa1461029f57806323bc2078146102b25780632cf9adc8146102c55780633659cfe6146102e55780633716e28414610305578063391a6d28146103355780634f1ef2861461035557806352169be81461036857806352d1902d14610388578063532742461461039d57806356292ab5146103e4578063572b6c0514610404578063619b8589146104335780636c1b7abd14610551578063715018a61461056457806377a856ea146105795780637ced595c146105995780637e5811fc146105ac5780638a320d64146105cc5780638da5cb5b146109bc5780639e2dc500146109de578063a0f7652314610a2c578063b052d17c14610a85578063b414ae2f14610aa5578063c462507e14610ad2578063e28be14414610b39578063e2f66b1e14610b59578063f2fde38b14610b79578063f4a4034514610b99578063f7013ef614610bb9578063fc2c997114610bd9575b600080fd5b34801561019a57600080fd5b506101ff6101a9366004614cd1565b60a960205260009081526040902080546001909101546001600160a01b03808316926001600160601b03600160a01b9182900416929182169160ff918104821691600160a81b8204811691600160b01b90041686565b604080516001600160a01b0397881681526001600160601b039096166020870152959093169484019490945215156060830152911515608082015290151560a082015260c0015b60405180910390f35b61026261025d366004614d5e565b610bec565b005b34801561027057600080fd5b5061029161027f366004614cd1565b60a16020526000908152604090205481565b604051908152602001610246565b6102626102ad366004614ec9565b610f56565b6102626102c0366004614f62565b61132d565b3480156102d157600080fd5b506102626102e0366004614fd9565b611533565b3480156102f157600080fd5b5061026261030036600461504c565b6119e3565b34801561031157600080fd5b50610325610320366004615070565b611ab5565b6040519015158152602001610246565b34801561034157600080fd5b50610262610350366004615092565b611ad6565b6102626103633660046150d0565b611be5565b34801561037457600080fd5b5061026261038336600461511f565b611c9f565b34801561039457600080fd5b50610291611dd4565b3480156103a957600080fd5b506102916103b836600461514f565b600082815260a1602090815260408083206001600160a01b038516845260010190915290205492915050565b3480156103f057600080fd5b506102626103ff366004615174565b611e82565b34801561041057600080fd5b5061032561041f36600461504c565b606a546001600160a01b0391821691161490565b34801561043f57600080fd5b506104d361044e366004614cd1565b609d602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008909801546001600160a01b039788169896881697909516959394929391926001600160401b0380831693600160401b8404821693600160801b8104831693600160c01b9091049092169160ff168c565b604080516001600160a01b039d8e1681529b8d1660208d015299909b16988a01989098526060890196909652608088019490945260a08701929092526001600160401b0390811660c087015290811660e08601529081166101008501521661012083015261014082015260ff90911661016082015261018001610246565b61026261055f3660046151e5565b611f3f565b34801561057057600080fd5b5061026261214d565b34801561058557600080fd5b50610262610594366004615285565b612161565b6102626105a73660046152b5565b61233f565b3480156105b857600080fd5b506102626105c7366004614cd1565b612671565b3480156105d857600080fd5b506109af6105e7366004614cd1565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a0810191909152600060a76000848152602001908152602001600020604051806101c00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff16815260200160008201601a9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff16815260200160018201601a9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016002820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820160149054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff16815260200160028201601a9054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff1681526020016003820160009054906101000a90046001600160c01b03166001600160c01b03166001600160c01b031681526020016003820160189054906101000a900465ffffffffffff1665ffffffffffff1665ffffffffffff16815260200160038201601e9054906101000a900460ff1615151515815260200160038201601f9054906101000a900460ff161515151581526020016004820154815250509050604051806101c0016040528082600001516001600160a01b03168152602001826020015165ffffffffffff168152602001826040015165ffffffffffff16815260200182606001516001600160a01b03168152602001826080015165ffffffffffff1681526020018260a0015165ffffffffffff1681526020018260c001516001600160a01b031681526020018260e0015165ffffffffffff16815260200182610100015165ffffffffffff1681526020018261012001516001600160c01b0316815260200182610140015165ffffffffffff1681526020018261016001511515815260200182610180015115158152602001826101a00151815250915050919050565b6040516102469190615340565b3480156109c857600080fd5b506109d161270b565b6040516102469190615443565b3480156109ea57600080fd5b50610a1f6109f936600461514f565b609f6020908152600092835260408084209091529082529020546001600160401b031681565b6040516102469190615457565b348015610a3857600080fd5b50610a66610a47366004614cd1565b600090815260a860205260409020546001811615159160809190911c90565b6040805192151583526001600160801b03909116602083015201610246565b348015610a9157600080fd5b50610262610aa036600461504c565b61271a565b348015610ab157600080fd5b50610291610ac0366004614cd1565b60a26020526000908152604090205481565b348015610ade57600080fd5b50610b15610aed366004614cd1565b609e6020526000908152604090205460ff808216916101008104821691620100009091041683565b6040805160ff94851681529284166020840152921691810191909152606001610246565b348015610b4557600080fd5b50610262610b54366004615482565b612766565b348015610b6557600080fd5b50610325610b7436600461504c565b612a8b565b348015610b8557600080fd5b50610262610b9436600461504c565b612a98565b348015610ba557600080fd5b50610325610bb436600461555c565b612b0e565b348015610bc557600080fd5b50610262610bd43660046155c5565b612c49565b610262610be7366004615629565b612dea565b33838015610bf8578096505b816001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c64919061569d565b6001600160a01b03161480610c8a5750896001600160a01b0316826001600160a01b0316145b15610f3b578815610d51578660011415610d155760405163b859c93560e01b81526001600160a01b038b169063b859c93590610ccc908b9087906004016156ba565b6020604051808303816000875af1158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f91906156d1565b50610ea1565b604051631b30808d60e01b8152600481018990526001600160a01b038481166024830152604482018990528b1690631b30808d90606401610ccc565b8660011415610e0a578315610dde57896001600160a01b0316630d640e818488886000818110610d8357610d836156ea565b905060200201356040518363ffffffff1660e01b8152600401610da7929190615700565b600060405180830381600087803b158015610dc157600080fd5b505af1158015610dd5573d6000803e3d6000fd5b50505050610ea1565b60405163184a94d560e01b81526001600160a01b038b169063184a94d590610ccc908690600401615443565b8315610e4057604051636371fbe760e01b81526001600160a01b038b1690636371fbe790610da79086908a908a9060040161574f565b604051630b7d2a8960e31b81526001600160a01b038b1690635be9544890610e6e9086908b90600401615700565b600060405180830381600087803b158015610e8857600080fd5b505af1158015610e9c573d6000803e3d6000fd5b505050505b8315610eef57896001600160a01b03167f4e84cd8521d66b0c0a2d95e21910942e1616948e140df953825b0cb02c32a5e98787604051610ee292919061577d565b60405180910390a2610f4a565b878915158b6001600160a01b03167f4c0491da007181c9465d71c51f64ba4f8eb23133900a4bb2dae027b0c2252c3f8a604051610f2e91815260200190565b60405180910390a4610f4a565b610f4a6282b42960e81b613259565b50505050505050505050565b600085815260a96020908152604091829020825160c08101845281546001600160a01b0380821683526001600160601b03600160a01b9283900416948301949094526001909201549283169381019390935260ff908204811615156060840152600160a81b8204811615156080840152600160b01b9091041615801560a08301523390610fed57610fed6337e9321960e21b613259565b816080015161100657611006633bed786f60e21b613259565b60ab54604083015185916001600160a01b03918216911614156110e45761102c82613263565b6110405761104063ac3274ef60e01b613259565b82604001516001600160a01b031663c4804ce28989898987896110616132c5565b6110696132d3565b8d60405160200161107c939291906157e9565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016110ad9796959493929190615867565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050506111f7565b60aa5460408085015185519151634b48652b60e11b81526000936001600160a01b031692639690ca5692611122928e928892918a91906004016158cc565b602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906156d1565b90508034101561117d5761117d63207226af60e01b613259565b60408401516001600160a01b031663c4804ce261119a8334615916565b8b8b8b8b898b8d6040518963ffffffff1660e01b81526004016111c39796959493929190615867565b6000604051808303818588803b1580156111dc57600080fd5b505af11580156111f0573d6000803e3d6000fd5b5050505050505b8063ffffffff16600114156112835782516001600160a01b0316630d640e81888888600081611228576112286156ea565b905060200201356040518363ffffffff1660e01b815260040161124c929190615700565b600060405180830381600087803b15801561126657600080fd5b505af115801561127a573d6000803e3d6000fd5b505050506112e9565b8251604051636371fbe760e01b81526001600160a01b0390911690636371fbe7906112b6908a908a908a9060040161574f565b600060405180830381600087803b1580156112d057600080fd5b505af11580156112e4573d6000803e3d6000fd5b505050505b6001151583600001516001600160a01b031689600080516020615ec1833981519152898960405161131b92919061577d565b60405180910390a45050505050505050565b600033600085815260a76020908152604080832081516101c08101835281546001600160a01b03808216835265ffffffffffff600160a01b808404821697850197909752600160d01b928390048116958401959095526001840154808216606085015286810486166080850152829004851660a08401819052600285015491821660c0850152958104851660e084015204831661010082015260038201546001600160c01b038116610120830152600160c01b810490931661014082015260ff600160f01b840481161515610160830152600160f81b9093049092161515610180830152600401546101a082015292935061142990869061592d565b6000878152609f602090815260408083206001600160a01b0389168452909152812054919250906114649087906001600160401b031661592d565b9050826101800151801561148157506001600160a01b0384163214155b1561149657611496630977d34b60e01b613259565b600087815260a760209081526040808320600101805465ffffffffffff808816600160d01b026001600160d01b0390921691909117909155609f83528184206001600160a01b038a16855290925290912080546001600160401b0319169183169190911790556101608301511561151b57611516878488888887876132df565b61152a565b61152a87848888888787613414565b50505050505050565b600085815260a760205260408120546001600160a01b031690339050806001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bb919061569d565b6001600160a01b031614806115e15750816001600160a01b0316816001600160a01b0316145b156119d45760006115f56020870187615957565b61ffff1611156116455761160f604087016020880161597b565b600088815260a760205260409020805465ffffffffffff92909216600160a01b0265ffffffffffff60a01b199092169190911790555b60006116576040870160208801615957565b61ffff1611156116a457611671606087016040880161597b565b600088815260a760205260409020805465ffffffffffff92909216600160d01b026001600160d01b039092169190911790555b60006116b66060870160408801615957565b61ffff161115611700576116d0608087016060880161504c565b600088815260a76020526040902060010180546001600160a01b0319166001600160a01b03929092169190911790555b60006117126080870160608801615957565b61ffff1611156117655761172c60a087016080880161597b565b600088815260a760205260409020600101805465ffffffffffff92909216600160a01b0265ffffffffffff60a01b199092169190911790555b600061177760a0870160808801615957565b61ffff1611156117cb57611792610100870160e0880161597b565b600088815260a760205260409020600201805465ffffffffffff92909216600160a01b0265ffffffffffff60a01b199092169190911790555b60006117dd60c0870160a08801615957565b61ffff16111561182f576117f96101208701610100880161597b565b600088815260a760205260409020600201805465ffffffffffff92909216600160d01b026001600160d01b039092169190911790555b600061184160e0870160c08801615998565b60ff16111561188c5761185c610140870161012088016159d0565b600088815260a76020526040902060030180546001600160c01b0319166001600160c01b03929092169190911790555b600061189f610100870160e08801615998565b60ff1611156118e8576118b860e0870160c0880161504c565b600088815260a76020526040902060020180546001600160a01b0319166001600160a01b03929092169190911790555b60006118fc61012087016101008801615998565b60ff161115611945576119176101a0870161018088016159ed565b600088815260a7602052604090206003018054911515600160f81b026001600160f81b039092169190911790555b600061195961014087016101208801615998565b60ff1611156119a45761196c84846134d7565b600088815260a860205260408082209290925590516001600160801b03851691861515918a91600080516020615f6883398151915291a45b60405187907fe772ce44f6b7edf20d62f174efc62c5a18484d62a710bd48d57af1afd140811c90600090a261152a565b61152a6282b42960e81b613259565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611a355760405162461bcd60e51b8152600401611a2c90615a0a565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a676134fc565b6001600160a01b031614611a8d5760405162461bcd60e51b8152600401611a2c90615a44565b611a9681613518565b60408051600080825260208201909252611ab291839190613520565b50565b600082815260a060205260408120611acd908361368b565b90505b92915050565b600083815260a760205260408120546001600160a01b031690339050806001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5e919061569d565b6001600160a01b03161480611b845750816001600160a01b0316816001600160a01b0316145b15611bcf57611b9384846134d7565b600086815260a860205260408082209290925590516001600160801b03851691861515918891600080516020615f6883398151915291a4611bde565b611bde6282b42960e81b613259565b5050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415611c2e5760405162461bcd60e51b8152600401611a2c90615a0a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c606134fc565b6001600160a01b031614611c865760405162461bcd60e51b8152600401611a2c90615a44565b611c8f82613518565b611c9b82826001613520565b5050565b600082815260a9602052604090205433906001600160a01b031680611cce57611cce633bed786f60e21b613259565b816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3a919061569d565b6001600160a01b03161480611d605750806001600160a01b0316826001600160a01b0316145b15611d9057600084815260a960205260409020600101805460ff60b01b1916600160b01b85151502179055611d9f565b611d9f6282b42960e81b613259565b6040518315159085907fa5a0d9b368dd777972caaaa919c8ca3243792928d90f1b032a1bab6b243a73ab90600090a350505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e6f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401611a2c565b50600080516020615f0183398151915290565b611e8a613697565b6001600160a01b038316611ea757611ea76282b42960e81b613259565b609c546001600160a01b03848116911614611ed857609c80546001600160a01b0319166001600160a01b0385161790555b60aa546001600160a01b03838116911614611f095760aa80546001600160a01b0319166001600160a01b0384161790555b60ab546001600160a01b03828116911614611f3a5760ab80546001600160a01b0319166001600160a01b0383161790555b505050565b338181611f5260608a0160408b0161504c565b6001600160a01b031614158015611f8a5750611f746060890160408a0161504c565b6001600160a01b0316856001600160a01b031614155b15611f9f57611f9f6343d0477760e01b613259565b611fab888888846136f6565b611ff36101408901358284611fc360208d018d61504c565b8c608001358d6060016020810190611fdb919061504c565b8e6020016020810190611fee919061504c565b61393c565b600061200560408a0160208b0161504c565b6001600160a01b0316896101400135600080516020615ec1833981519152878760405161203392919061577d565b60405180910390a480600114156120d1576120546040890160208a0161504c565b6001600160a01b0316630d640e818686866000818110612076576120766156ea565b905060200201356040518363ffffffff1660e01b815260040161209a929190615700565b600060405180830381600087803b1580156120b457600080fd5b505af11580156120c8573d6000803e3d6000fd5b50505050612143565b6120e16040890160208a0161504c565b6001600160a01b0316636371fbe78686866040518463ffffffff1660e01b81526004016121109392919061574f565b600060405180830381600087803b15801561212a57600080fd5b505af115801561213e573d6000803e3d6000fd5b505050505b5050505050505050565b612155613697565b61215f6000613a1d565b565b3380612170602084018461504c565b6001600160a01b0316148061220357506001600160a01b038116612197602084018461504c565b6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f8919061569d565b6001600160a01b0316145b1561233057600061221a60c0840160a0850161597b565b65ffffffffffff1611156122385761223863875fc25f60e01b613259565b60a3805490600061224883615a7e565b909155505060a354600090815260a760205260409020829061226a8282615acd565b5061227f9050610180830161016084016159ed565b156122e757612291602083018361504c565b6001600160a01b03166122ac6101608401610140850161597b565b65ffffffffffff1660a3547fa712e8b25b3d4d043988e80f0a4087773b1c7e29e4115a4256e86aebe91c9be960405160405180910390a45050565b6122f4602083018361504c565b6001600160a01b031660a3547f7258df9bfe0a9fb9cf1285396575e6472f56ca38b4851afcb725c82726fd67ff60405160405180910390a35050565b611c9b6282b42960e81b613259565b3380612351606088016040890161504c565b6001600160a01b0316141580156123895750612373606087016040880161504c565b6001600160a01b0316836001600160a01b031614155b1561239e5761239e6343d0477760e01b613259565b6123a9868686613a6f565b6123fd6101608701356123c260c0890160a08a01615ca0565b6001600160401b0316836123d960208b018b61504c565b60808b018035906123ed9060608e0161504c565b611fee60408e0160208f0161504c565b600061240f604088016020890161504c565b6001600160a01b0316610160880135600080516020615f4883398151915261243d60c08b0160a08c01615ca0565b60405161244a9190615457565b60405180910390a4811561257b5761246860c0870160a08801615ca0565b6001600160401b03166001141561250457612489604087016020880161504c565b6001600160a01b031663b859c935876101000135856040518363ffffffff1660e01b81526004016124bb9291906156ba565b6020604051808303816000875af11580156124da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fe91906156d1565b50612669565b612514604087016020880161504c565b6001600160a01b0316631b30808d6101008801358561253960c08b0160a08c01615ca0565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526001600160401b031660448201526064016124bb565b61258b60c0870160a08801615ca0565b6001600160401b0316600114156125d7576125ac604087016020880161504c565b6001600160a01b031663184a94d5846040518263ffffffff1660e01b81526004016124bb9190615443565b6125e7604087016020880161504c565b6001600160a01b0316635be954488461260660c08a0160a08b01615ca0565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160401b03166024820152604401600060405180830381600087803b15801561265557600080fd5b505af1158015610f4a573d6000803e3d6000fd5b505050505050565b609c546001600160a01b0316336001600160a01b03161461269b5761269b6282b42960e81b613259565b609c5460405160009182916001600160a01b039091169084908381818185875af1925050503d80600081146126ec576040519150601f19603f3d011682016040523d82523d6000602084013e6126f1565b606091505b509150915081611f3a57611f3a637cd69c3960e11b613259565b6038546001600160a01b031690565b612722613697565b6001600160a01b038116612740576127406340f3a16b60e01b613259565b61274b60a482613c39565b1561275b57611c9b60a482613c4e565b611c9b60a482613c63565b83516020808601516040808801516060808a015183516001600160601b031997831b8816818801526001600160a01b031960a096871b811660348301529390921b9096168184015294151560f81b60548601529187901b90911660558401528051808403604101815260619093019052815191012084513391906001600160a01b031682148061286c5750816001600160a01b031686600001516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561283d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612861919061569d565b6001600160a01b0316145b1561299a57600081815260a960205260409020546001600160a01b03161561289e5761289e63250675bd60e21b613259565b85516001600160a01b031615806128c0575060408601516001600160a01b0316155b806128d85750856060015180156128d8575085608001515b806128e1575080155b156128f6576128f6633bed786f60e21b613259565b600060a0870181815282825260a960209081526040928390208951918a01516001600160a01b03928316600160a01b6001600160601b039092168202178255938a01516001909101805460608c015160808d01519551939094166001600160a81b0319909116179215159094029190911761ffff60a81b1916600160a81b9215159290920260ff60b01b191691909117600160b01b911515919091021790556129a9565b6129a96282b42960e81b613259565b85604001516001600160a01b0316631a8d37928286866040518463ffffffff1660e01b81526004016129dd93929190615cc9565b600060405180830381600087803b1580156129f757600080fd5b505af1158015612a0b573d6000803e3d6000fd5b5050505085600001516001600160a01b031686604001516001600160a01b0316827f6ec667d7188a57a345b217226db199b2b1e98d2ccdb2eaa555af7ad19324303789602001518a60600151604051612a7b9291906001600160601b039290921682521515602082015260400190565b60405180910390a4505050505050565b6000611ad060a483613c39565b612aa0613697565b6001600160a01b038116612b055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611a2c565b611ab281613a1d565b600080612b1c868686613c78565b9050612b2960a482613c39565b8015612b555750610160860135600090815260a060205260409020612b539061014088013561368b565b155b8015612b6657508561012001354211155b8015612bb9575060c08601351580612bb95750610160860135600090815260a1602052604090205460c0870180359190612ba39060a08a01615ca0565b6001600160401b0316612bb69190615cff565b11155b8015612c3d575060e08601351580612c3d5750610160860135600090815260a1602052604080822060e089013592600190910191612bfd9060608b01908b0161504c565b6001600160a01b03168152602081019190915260400160002054612c2760c0890160a08a01615ca0565b6001600160401b0316612c3a9190615cff565b11155b9150505b949350505050565b600054610100900460ff1615808015612c695750600054600160ff909116105b80612c8a5750612c7830613d02565b158015612c8a575060005460ff166001145b612ced5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401611a2c565b6000805460ff191660011790558015612d10576000805461ff0019166101001790555b609c80546001600160a01b0319166001600160a01b038816179055604080518082018252600b81526a26b4b73a26b0b730b3b2b960a91b602080830191909152825180840190935260058352640312e302e360dc1b90830152612d7291613d11565b612d7b84613d92565b612d83613ddb565b612d8c85613a1d565b612d9760a484613c63565b5060a68290558015612669576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050565b600084815260a96020908152604091829020825160c08101845281546001600160a01b0380821683526001600160601b03600160a01b9283900416948301949094526001909201549283169381019390935260ff908204811615156060840152600160a81b8204811615156080840152600160b01b9091041615801560a08301523390612e8157612e816337e9321960e21b613259565b816080015115612e9b57612e9b633bed786f60e21b613259565b60ab5460408301516001600160a01b0390811691161415612f7557612ebf81613263565b612ed357612ed363ac3274ef60e01b613259565b81604001516001600160a01b0316639cc163e58787878587612ef36132c5565b612efb6132d3565b8b604051602001612f0e939291906157e9565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401612f3e96959493929190615d17565b600060405180830381600087803b158015612f5857600080fd5b505af1158015612f6c573d6000803e3d6000fd5b50505050613086565b60aa5460408084015184519151634b48652b60e11b81526000936001600160a01b031692639690ca5692612fb3928c928b92918991906004016158cc565b602060405180830381865afa158015612fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff491906156d1565b90508034101561300e5761300e63207226af60e01b613259565b60408301516001600160a01b0316639cc163e561302b8334615916565b89898987898b6040518863ffffffff1660e01b815260040161305296959493929190615d17565b6000604051808303818588803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b5050505050505b81606001511561317c578363ffffffff166001141561312a578151602083015160405163b859c93560e01b81526001600160601b0390911660048201526001600160a01b0387811660248301529091169063b859c935906044015b6020604051808303816000875af1158015613100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312491906156d1565b50613224565b81516020830151604051631b30808d60e01b81526001600160601b0390911660048201526001600160a01b03878116602483015263ffffffff8716604483015290911690631b30808d906064016130e1565b8363ffffffff16600114156131ba57815160405163184a94d560e01b81526001600160a01b039091169063184a94d5906130e1908890600401615443565b8151604051630b7d2a8960e31b81526001600160a01b0390911690635be95448906131f190889063ffffffff891690600401615700565b600060405180830381600087803b15801561320b57600080fd5b505af115801561321f573d6000803e3d6000fd5b505050505b815160405163ffffffff861681526001916001600160a01b0316908890600080516020615f4883398151915290602001612a7b565b8060005260046000fd5b6000466101441480613276575046610118145b61329f576001600160a01b03821673abcc9b596420a9e9172fd5938620e265a0f9df9214611ad0565b6001600160a01b03821673b16a1dbe755f992636705fdbb3a8678a657eb3ea1492915050565b601f1936013590565b905090565b60471936013560601c90565b6132ed878787858588613e0a565b8465ffffffffffff166001141561338957855161014087015160405163b859c93560e01b815265ffffffffffff90911660048201526001600160a01b0386811660248301529091169063b859c935906044015b6020604051808303816000875af115801561335f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338391906156d1565b5061152a565b8551610140870151604051631b30808d60e01b815265ffffffffffff91821660048201526001600160a01b0387811660248301529188166044820152911690631b30808d906064016020604051808303816000875af11580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214391906156d1565b613422878787858588613e0a565b8465ffffffffffff166001141561346257855160405163184a94d560e01b81526001600160a01b039091169063184a94d590613340908790600401615443565b8551604051630b7d2a8960e31b81526001600160a01b03868116600483015265ffffffffffff8816602483015290911690635be9544890604401600060405180830381600087803b1580156134b657600080fd5b505af11580156134ca573d6000803e3d6000fd5b5050505050505050505050565b60008083156134e4576001175b6001600160801b0319608084901b1617905092915050565b600080516020615f01833981519152546001600160a01b031690565b611ab2613697565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561355357611f3a83613fb2565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156135ad575060408051601f3d908101601f191682019092526135aa918101906156d1565b60015b6136105760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401611a2c565b600080516020615f01833981519152811461367f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401611a2c565b50611f3a83838361404c565b6000611acd8383614077565b336136a061270b565b6001600160a01b03161461215f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611a2c565b600061370385858561408f565b610140860135600090815260a1602052604081205491925090613727908490615cff565b905060008360a160008961014001358152602001908152602001600020600101600089604001602081019061375c919061504c565b6001600160a01b03166001600160a01b03168152602001908152602001600020546137879190615cff565b905061379460a484613c39565b15806137d957506137ab60c0880160a08901615ca0565b6001600160401b0316841180156137d957506137cd60c0880160a08901615ca0565b6001600160401b031615155b806138025750610140870135600090815260a0602052604090206138029061012089013561368b565b80613826575061381a61012088016101008901615ca0565b6001600160401b031642115b8061386a575061383c60e0880160c08901615ca0565b6001600160401b03168211801561386a575061385e60e0880160c08901615ca0565b6001600160401b031615155b806138b05750613881610100880160e08901615ca0565b6001600160401b0316811180156138b057506138a4610100880160e08901615ca0565b6001600160401b031615155b156138c5576138c5633b4f091f60e21b613259565b610140870135600090815260a0602052604090206138e8906101208901356140e5565b50610140870135600090815260a1602052604080822084815583926001909101916139199060608c01908c0161504c565b6001600160a01b0316815260208101919091526040016000205550505050505050565b60aa546040516376c1989360e01b815260048101899052602481018890526001600160a01b0387811660448301528681166064830152838116608483015260009283929116906376c198939060a4016040805180830381865afa1580156139a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139cb9190615d6f565b909250905060006001600160a01b038716156139e85760006139ea565b825b905060006139f8878b615d94565b9050613a078b82848b8a6140f1565b5050506134ca848a8a898f878d6000148a614157565b603880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613a7c848484613c78565b90506000613a9060c0860160a08701615ca0565b610160860135600090815260a16020526040902054613ab8916001600160401b031690615cff565b90506000613acc60c0870160a08801615ca0565b6001600160401b031660a1600088610160013581526020019081526020016000206001016000886040016020810190613b05919061504c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054613b309190615cff565b9050613b3d60a484613c39565b1580613b675750610160860135600090815260a060205260409020613b679061014088013561368b565b80613b76575085610120013542115b80613b9257508560c0013582118015613b92575060c086013515155b80613bae57508560e0013581118015613bae575060e086013515155b15613bc357613bc3633b4f091f60e21b613259565b610160860135600090815260a060205260409020613be6906101408801356140e5565b50610160860135600090815260a160205260408082208481558392600190910191613c179060608b01908b0161504c565b6001600160a01b03168152602081019190915260400160002055505050505050565b6000611acd836001600160a01b038416614077565b6000611acd836001600160a01b0384166142e8565b6000611acd836001600160a01b0384166143db565b6000612c4183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cfc9250613cc29150889050614425565b613cd0886101600135614540565b604051602001613ce1929190615db3565b60405160208183030381529060405280519060200120614555565b9061459c565b6001600160a01b03163b151590565b600054610100900460ff16613d385760405162461bcd60e51b8152600401611a2c90615dd9565b815160208084019190912082519183019190912060038290556004819055466002557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613d868184846145c0565b60015560055550505050565b600054610100900460ff16613db95760405162461bcd60e51b8152600401611a2c90615dd9565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16613e025760405162461bcd60e51b8152600401611a2c90615dd9565b61215f614609565b8265ffffffffffff16856080015165ffffffffffff16108015613e385750608085015165ffffffffffff1615155b80613e6e57508165ffffffffffff1685610100015165ffffffffffff16108015613e6e575061010085015165ffffffffffff1615155b80613ec6575042856020015165ffffffffffff16118015613e9a5750602085015165ffffffffffff1615155b80613ec65750846040015165ffffffffffff1642118015613ec65750604085015165ffffffffffff1615155b80613ed7575065ffffffffffff8416155b80613f0b57508460e0015165ffffffffffff168465ffffffffffff16118015613f0b575060e085015165ffffffffffff1615155b15613f2057613f2063072b86df60e21b613259565b600086815260a8602052604090205460011615613f4757613f47636be9245d60e11b613259565b613f7b8660001b8565ffffffffffff16838860c001518961012001516001600160c01b03168a606001518b6000015161393c565b845160405165ffffffffffff861681526001916001600160a01b0316908890600080516020615f4883398151915290602001612a7b565b613fbb81613d02565b61401d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401611a2c565b600080516020615f0183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61405583614639565b6000825111806140625750805b15611f3a576140718383614679565b50505050565b60009081526001919091016020526040902054151590565b6000612c4183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cfc92506140d9915088905061469e565b80519060200120614555565b6000611acd83836143db565b600080806001600160a01b038516614139573461410e8888615cff565b1461412357614123637e2897ef60e11b613259565b86156141345761413487858a6147cb565b61414c565b861561414c5761414c878532888c614883565b955095509592505050565b8715612143576001600160a01b038616156141e55760aa546040516323b872dd60e01b81526001600160a01b03808916926323b872dd926141a092329216908d90600401615e24565b6020604051808303816000875af11580156141bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141e39190615e48565b505b60aa54604051636f18e93f60e01b81526004810186905283151560248201526001600160a01b0387811660448301528881166064830152608482018b905289811660a483015283151560c48301526000921690636f18e93f90869060e40160206040518083038185885af1158015614261573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061428691906156d1565b905080156142dd57856001600160a01b0316876001600160a01b0316867f27dcd1d67ca97c55aa198d8494458949bbbddae9336ef0969fc655edb5d2180a846040516142d491815260200190565b60405180910390a45b505050505050505050565b600081815260018301602052604081205480156143d157600061430c600183615916565b855490915060009061432090600190615916565b9050818114614385576000866000018281548110614340576143406156ea565b9060005260206000200154905080876000018481548110614363576143636156ea565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061439657614396615e65565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611ad0565b6000915050611ad0565b60006143e78383614077565b61441d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611ad0565b506000611ad0565b60607f75d70c323d802883252e6285d4bb7cc6fcb7faca7fe3ab1d9e9f260aaa4c3424614455602084018461504c565b614465604085016020860161504c565b614475606086016040870161504c565b614485608087016060880161504c565b608087013561449a60c0890160a08a01615ca0565b6040805160208101989098526001600160a01b03968716908801529385166060870152918416608086015290921660a084015260c0808401929092526001600160401b031660e080840191909152908401356101008084019190915290840135610120808401919091529084013561014080840191909152908401356101608301528301356101808201526101a0015b6040516020818303038152906040529050919050565b60608160405160200161452a91815260200190565b600061455f614953565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b60008060006145ab8585614977565b915091506145b8816149bd565b509392505050565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b600054610100900460ff166146305760405162461bcd60e51b8152600401611a2c90615dd9565b61215f33613a1d565b61464281613fb2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611acd8383604051806060016040528060278152602001615f2160279139614b06565b60607faf2a8dc7de0e027b17ddbe873c600be814993ef395f58475bc9ef0408f7ccf166146ce602084018461504c565b6146de604085016020860161504c565b6146ee606086016040870161504c565b6146fe608087016060880161504c565b608087013561471360c0890160a08a01615ca0565b61472360e08a0160c08b01615ca0565b6147346101008b0160e08c01615ca0565b6147466101208c016101008d01615ca0565b60408051602081019b909b526001600160a01b03998a16908b015296881660608a015294871660808901529290951660a087015260c08601526001600160401b0393841660e08601528316610100850152821661012080850191909152911661014080840191909152908401356101608301528301356101808201526101a00161452a565b6000826001600160a01b03168460405160006040518083038185875af1925050503d8060008114614818576040519150601f19603f3d011682016040523d82523d6000602084013e61481d565b606091505b505090508061483657614836637cd69c3960e11b613259565b60408051858152612710602082015283916001600160a01b038616917f9363885e28e7ba67b096932f9f00dff44742731d6cb4fa26ccd4424e78e41e13910160405180910390a350505050565b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906148b390869088908a90600401615e24565b6020604051808303816000875af11580156148d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148f69190615e48565b50604080516001600160a01b03858116825260208201889052612710828401529151839287811692908616917fc899cbcc4511003ff90131e8b89605738e9a7f4925273377ae479a673cf5038c9181900360600190a45050505050565b6000600254461415614966575060015490565b6132ce6005546003546004546145c0565b6000808251604114156149ae5760208301516040840151606085015160001a6149a287828585614b7e565b945094505050506149b6565b506000905060025b9250929050565b60008160048111156149d1576149d1615e7b565b14156149da5750565b60018160048111156149ee576149ee615e7b565b1415614a375760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401611a2c565b6002816004811115614a4b57614a4b615e7b565b1415614a995760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611a2c565b6003816004811115614aad57614aad615e7b565b1415611ab25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401611a2c565b6060600080856001600160a01b031685604051614b239190615e91565b600060405180830381855af49150503d8060008114614b5e576040519150601f19603f3d011682016040523d82523d6000602084013e614b63565b606091505b5091509150614b7486838387614c38565b9695505050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115614bab5750600090506003614c2f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bff573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614c2857600060019250925050614c2f565b9150600090505b94509492505050565b60608315614ca2578251614c9b57614c4f85613d02565b614c9b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611a2c565b5081612c41565b612c418383815115614cb75781518083602001fd5b8060405162461bcd60e51b8152600401611a2c9190615ead565b600060208284031215614ce357600080fd5b5035919050565b6001600160a01b03169052565b6001600160a01b0381168114611ab257600080fd5b8015158114611ab257600080fd5b60008083601f840112614d2c57600080fd5b5081356001600160401b03811115614d4357600080fd5b6020830191508360208260051b85010111156149b657600080fd5b60008060008060008060008060e0898b031215614d7a57600080fd5b8835614d8581614cf7565b97506020890135614d9581614d0c565b9650604089013595506060890135945060808901356001600160401b03811115614dbe57600080fd5b614dca8b828c01614d1a565b90955093505060a0890135614dde81614d0c565b915060c0890135614dee81614cf7565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715614e3757614e37614dff565b60405290565b600082601f830112614e4e57600080fd5b81356001600160401b0380821115614e6857614e68614dff565b604051601f8301601f19908116603f01168101908282118183101715614e9057614e90614dff565b81604052838152866020858801011115614ea957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060808688031215614ee157600080fd5b853594506020860135614ef381614cf7565b935060408601356001600160401b0380821115614f0f57600080fd5b614f1b89838a01614d1a565b90955093506060880135915080821115614f3457600080fd5b50614f4188828901614e3d565b9150509295509295909350565b65ffffffffffff81168114611ab257600080fd5b600080600060608486031215614f7757600080fd5b833592506020840135614f8981614f4e565b91506040840135614f9981614cf7565b809150509250925092565b60006101c08284031215614fb757600080fd5b50919050565b80356001600160801b0381168114614fd457600080fd5b919050565b6000806000806000858703610360811215614ff357600080fd5b863595506150048860208901614fa4565b94506101406101df198201121561501a57600080fd5b506101e08601925061032086013561503181614d0c565b91506150406103408701614fbd565b90509295509295909350565b60006020828403121561505e57600080fd5b813561506981614cf7565b9392505050565b6000806040838503121561508357600080fd5b50508035926020909101359150565b6000806000606084860312156150a757600080fd5b8335925060208401356150b981614d0c565b91506150c760408501614fbd565b90509250925092565b600080604083850312156150e357600080fd5b82356150ee81614cf7565b915060208301356001600160401b0381111561510957600080fd5b61511585828601614e3d565b9150509250929050565b6000806040838503121561513257600080fd5b82359150602083013561514481614d0c565b809150509250929050565b6000806040838503121561516257600080fd5b82359150602083013561514481614cf7565b60008060006060848603121561518957600080fd5b833561519481614cf7565b92506020840135614f8981614cf7565b60008083601f8401126151b657600080fd5b5081356001600160401b038111156151cd57600080fd5b6020830191508360208285010111156149b657600080fd5b6000806000806000808688036101c081121561520057600080fd5b6101608082121561521057600080fd5b88975087013590506001600160401b038082111561522d57600080fd5b6152398a838b016151a4565b9097509550610180890135915061524f82614cf7565b9093506101a0880135908082111561526657600080fd5b5061527389828a01614d1a565b979a9699509497509295939492505050565b60006101c0828403121561529857600080fd5b611acd8383614fa4565b60006101808284031215614fb757600080fd5b60008060008060006101e086880312156152ce57600080fd5b6152d887876152a2565b94506101808601356001600160401b038111156152f457600080fd5b615300888289016151a4565b9095509350506101a086013561531581614cf7565b91506101c086013561532681614d0c565b809150509295509295909350565b65ffffffffffff169052565b60006101c082019050615354828451614cea565b60208301516153666020840182615334565b5060408301516153796040840182615334565b50606083015161538c6060840182614cea565b50608083015161539f6080840182615334565b5060a08301516153b260a0840182615334565b5060c08301516153c560c0840182614cea565b5060e08301516153d860e0840182615334565b50610100808401516153ec82850182615334565b5050610120838101516001600160c01b0316908301526101408084015161541582850182615334565b505061016083810151151590830152610180808401511515908301526101a092830151929091019190915290565b6001600160a01b0391909116815260200190565b6001600160401b0391909116815260200190565b80356001600160601b0381168114614fd457600080fd5b60008060008084860361010081121561549a57600080fd5b60c08112156154a857600080fd5b506154b1614e15565b85356154bc81614cf7565b81526154ca6020870161546b565b602082015260408601356154dd81614cf7565b604082015260608601356154f081614d0c565b6060820152608086013561550381614d0c565b608082015260a086013561551681614d0c565b60a0820152935061552960c0860161546b565b925060e08501356001600160401b0381111561554457600080fd5b615550878288016151a4565b95989497509550505050565b6000806000806101c0858703121561557357600080fd5b61557d86866152a2565b93506101808501356001600160401b0381111561559957600080fd5b6155a5878288016151a4565b9094509250506101a08501356155ba81614cf7565b939692955090935050565b600080600080600060a086880312156155dd57600080fd5b85356155e881614cf7565b945060208601356155f881614cf7565b9350604086013561560881614cf7565b9250606086013561561881614cf7565b949793965091946080013592915050565b6000806000806080858703121561563f57600080fd5b84359350602085013561565181614cf7565b9250604085013563ffffffff8116811461566a57600080fd5b915060608501356001600160401b0381111561568557600080fd5b61569187828801614e3d565b91505092959194509250565b6000602082840312156156af57600080fd5b815161506981614cf7565b9182526001600160a01b0316602082015260400190565b6000602082840312156156e357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03929092168252602082015260400190565b81835260006001600160fb1b0383111561573257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6001600160a01b03841681526040602082018190526000906157749083018486615719565b95945050505050565b602081526000612c41602083018486615719565b60005b838110156157ac578181015183820152602001615794565b838111156140715750506000910152565b600081518084526157d5816020860160208601615791565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090615774908301846157bd565b80516001600160a01b0390811683526020808301516001600160601b0316908401526040808301519091169083015260608082015115159083015260808082015115159083015260a0908101511515910152565b8781526001600160a01b03878116602083015261016060408301819052600091615894848301898b615719565b908716606085015290506158ab6080840186615813565b8281036101408401526158be81856157bd565b9a9950505050505050505050565b94855263ffffffff9390931660208501526001600160a01b0391821660408501528116606084015216608082015260a00190565b634e487b7160e01b600052601160045260246000fd5b60008282101561592857615928615900565b500390565b600065ffffffffffff80831681851680830382111561594e5761594e615900565b01949350505050565b60006020828403121561596957600080fd5b813561ffff8116811461506957600080fd5b60006020828403121561598d57600080fd5b813561506981614f4e565b6000602082840312156159aa57600080fd5b813560ff8116811461506957600080fd5b6001600160c01b0381168114611ab257600080fd5b6000602082840312156159e257600080fd5b8135615069816159bb565b6000602082840312156159ff57600080fd5b813561506981614d0c565b6020808252602c90820152600080516020615ee183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020615ee183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6000600019821415615a9257615a92615900565b5060010190565b60008135611ad081614cf7565b60008135611ad081614f4e565b60008135611ad0816159bb565b60008135611ad081614d0c565b615af6615ad983615a99565b82546001600160a01b0319166001600160a01b0391909116178255565b615b2d615b0560208401615aa6565b82805465ffffffffffff60a01b191660a09290921b65ffffffffffff60a01b16919091179055565b615b60615b3c60408401615aa6565b8280546001600160d01b031660d09290921b6001600160d01b031916919091179055565b60018101615b73615ad960608501615a99565b615b82615b0560808501615aa6565b615b91615b3c60a08501615aa6565b5060028101615ba5615ad960c08501615a99565b615bb4615b0560e08501615aa6565b615bc4615b3c6101008501615aa6565b5060038101615bf6615bd96101208501615ab3565b82546001600160c01b0319166001600160c01b0391909116178255565b615c2e615c066101408501615aa6565b82805465ffffffffffff60c01b191660c09290921b65ffffffffffff60c01b16919091179055565b615c5c615c3e6101608501615ac0565b82805460ff60f01b191691151560f01b60ff60f01b16919091179055565b615c90615c6c6101808501615ac0565b8280546001600160f81b031691151560f81b6001600160f81b031916919091179055565b506101a082013560048201555050565b600060208284031215615cb257600080fd5b81356001600160401b038116811461506957600080fd5b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008219821115615d1257615d12615900565b500190565b8681526001600160a01b03868116602083015263ffffffff86166040830152841660608201526000610160615d4f6080840186615813565b80610140840152615d62818401856157bd565b9998505050505050505050565b60008060408385031215615d8257600080fd5b82519150602083015161514481614d0c565b6000816000190483118215151615615dae57615dae615900565b500290565b60008351615dc5818460208801615791565b83519083019061594e818360208801615791565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615e5a57600080fd5b815161506981614d0c565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008251615ea3818460208701615791565b9190910192915050565b602081526000611acd60208301846157bd56fee0bf8a4af82e2af496af5f4957e2767f8b52e51a77caedd2f30a1843872d1b7c46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564981414aed4973b05aa301314dc13a5a4077f24490497b98bc270852581c1c578aaca5cb46300e4b20595b143bc883119e775ef88ff77f45fa989ca323576f06ba164736f6c634300080a000a