0 txs
0 calls
constructor
constructor(address christTokenAddress, address svgGeneratorAddress)
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
christToken
viewfunction christToken() view returns (address)
hasClaimed
viewfunction hasClaimed(address, uint256) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
seasonalGreetings
viewfunction seasonalGreetings(uint256) view returns (string)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
svgGenerator
viewfunction svgGenerator() view returns (address)
TOTAL_DAYS
viewfunction TOTAL_DAYS() view returns (uint256)
uri
viewfunction uri(uint256 tokenId) view returns (string)
claim
nonpayablefunction claim(uint256 day)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setSVGGenerator
nonpayablefunction setSVGGenerator(address newGenerator)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateSeasonalGreeting
nonpayablefunction updateSeasonalGreeting(uint256 day, string greeting)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
Claimed
event Claimed(address indexed claimer, uint256 indexed day, uint256 tokenId)
ContractPaused
event ContractPaused(address indexed account)
ContractUnpaused
event ContractUnpaused(address indexed account)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SeasonalGreetingsUpdated
event SeasonalGreetingsUpdated(uint256 indexed day, string greeting)
SVGGeneratorUpdated
event SVGGeneratorUpdated(address indexed newGenerator)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
URI
event URI(string value, uint256 indexed id)
errors
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040525f60215f6101000a81548160ff021916908315150217905550348015610028575f80fd5b50604051614f0d380380614f0d833981810160405281019061004a91906106e8565b3360405180602001604052805f8152506100698161026360201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100da575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100d19190610735565b60405180910390fd5b6100e98161027660201b60201c565b5060016004819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610160576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610157906107a8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c590610810565b60405180910390fd5b8160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061025c61033960201b60201c565b5050610b64565b80600290816102729190610a68565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051806103200160405280604051806080016040528060468152602001614da36046913981526020016040518060800160405280604c8152602001614c0d604c913981526020016040518060600160405280602d8152602001614d76602d91398152602001604051806080016040528060458152602001614aaa6045913981526020016040518060600160405280603a815260200161496a603a913981526020016040518060600160405280603c8152602001614aef603c91398152602001604051806080016040528060418152602001614de9604191398152602001604051806060016040528060358152602001614bd86035913981526020016040518060600160405280603a8152602001614b2b603a91398152602001604051806060016040528060408152602001614cf86040913981526020016040518060600160405280603e8152602001614b65603e913981526020016040518060600160405280603e8152602001614d38603e91398152602001604051806060016040528060358152602001614ba36035913981526020016040518060600160405280603e8152602001614cba603e91398152602001604051806060016040528060408152602001614e2a6040913981526020016040518060600160405280603a8152602001614a34603a913981526020016040518060600160405280603581526020016149ff6035913981526020016040518060600160405280602d8152602001614c59602d913981526020016040518060600160405280603581526020016149ca603591398152602001604051806060016040528060398152602001614ed4603991398152602001604051806060016040528060348152602001614c86603491398152602001604051806060016040528060368152602001614e6a6036913981526020016040518060600160405280602681526020016149a4602691398152602001604051806060016040528060348152602001614ea06034913981526020016040518060600160405280603c8152602001614a6e603c913981525090505f5b60198110156106865781816019811061065257610651610b37565b5b60200201516008826019811061066b5761066a610b37565b5b0190816106789190610a68565b508080600101915050610636565b5050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106b78261068e565b9050919050565b6106c7816106ad565b81146106d1575f80fd5b50565b5f815190506106e2816106be565b92915050565b5f80604083850312156106fe576106fd61068a565b5b5f61070b858286016106d4565b925050602061071c858286016106d4565b9150509250929050565b61072f816106ad565b82525050565b5f6020820190506107485f830184610726565b92915050565b5f82825260208201905092915050565b7f496e76616c69642043687269737420746f6b656e2061646472657373000000005f82015250565b5f610792601c8361074e565b915061079d8261075e565b602082019050919050565b5f6020820190508181035f8301526107bf81610786565b9050919050565b7f496e76616c6964205356472067656e657261746f7220616464726573730000005f82015250565b5f6107fa601d8361074e565b9150610805826107c6565b602082019050919050565b5f6020820190508181035f830152610827816107ee565b9050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806108a957607f821691505b6020821081036108bc576108bb610865565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261091e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826108e3565b61092886836108e3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61096c61096761096284610940565b610949565b610940565b9050919050565b5f819050919050565b61098583610952565b61099961099182610973565b8484546108ef565b825550505050565b5f90565b6109ad6109a1565b6109b881848461097c565b505050565b5b818110156109db576109d05f826109a5565b6001810190506109be565b5050565b601f821115610a20576109f1816108c2565b6109fa846108d4565b81016020851015610a09578190505b610a1d610a15856108d4565b8301826109bd565b50505b505050565b5f82821c905092915050565b5f610a405f1984600802610a25565b1980831691505092915050565b5f610a588383610a31565b9150826002028217905092915050565b610a718261082e565b67ffffffffffffffff811115610a8a57610a89610838565b5b610a948254610892565b610a9f8282856109df565b5f60209050601f831160018114610ad0575f8415610abe578287015190505b610ac88582610a4d565b865550610b2f565b601f198416610ade866108c2565b5f5b82811015610b0557848901518255600182019150602085019450602081019050610ae0565b86831015610b225784890151610b1e601f891682610a31565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613df980610b715f395ff3fe608060405234801561000f575f80fd5b506004361061013f575f3560e01c8063715018a6116100b6578063b222c9e41161007a578063b222c9e41461033b578063b293109614610357578063b3a0f37d14610387578063e985e9c5146103a3578063f242432a146103d3578063f2fde38b146103ef5761013f565b8063715018a6146102cf5780638456cb59146102d95780638baea60a146102e35780638da5cb5b14610301578063a22cb4651461031f5761013f565b806339c03d741161010857806339c03d741461020b5780633f4ba83a1461023b5780634e1273f41461024557806357980a43146102755780635c975abb146102935780636d6060f5146102b15761013f565b8062fdd58e1461014357806301ffc9a7146101735780630e89341c146101a35780632eb2c2d6146101d3578063379607f5146101ef575b5f80fd5b61015d60048036038101906101589190612432565b61040b565b60405161016a919061247f565b60405180910390f35b61018d600480360381019061018891906124ed565b610460565b60405161019a9190612532565b60405180910390f35b6101bd60048036038101906101b8919061254b565b610541565b6040516101ca91906125e6565b60405180910390f35b6101ed60048036038101906101e891906127f6565b6107de565b005b6102096004803603810190610204919061254b565b610885565b005b6102256004803603810190610220919061254b565b610b79565b60405161023291906125e6565b60405180910390f35b610243610c18565b005b61025f600480360381019061025a9190612981565b610c7e565b60405161026c9190612aae565b60405180910390f35b61027d610d85565b60405161028a919061247f565b60405180910390f35b61029b610d8a565b6040516102a89190612532565b60405180910390f35b6102b9610d9c565b6040516102c69190612b29565b60405180910390f35b6102d7610dc1565b005b6102e1610dd4565b005b6102eb610e3b565b6040516102f89190612b62565b60405180910390f35b610309610e60565b6040516103169190612b8a565b60405180910390f35b61033960048036038101906103349190612bcd565b610e88565b005b61035560048036038101906103509190612ca9565b610e9e565b005b610371600480360381019061036c9190612432565b610fa5565b60405161037e9190612532565b60405180910390f35b6103a1600480360381019061039c9190612d03565b610fcf565b005b6103bd60048036038101906103b89190612d2e565b6110cb565b6040516103ca9190612532565b60405180910390f35b6103ed60048036038101906103e89190612d6c565b611159565b005b61040960048036038101906104049190612d03565b611200565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061052a57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061053a575061053982611284565b5b9050919050565b606060018210158015610555575060198211155b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b90612e49565b60405180910390fd5b5f60086001846105a49190612e94565b601981106105b5576105b4612ec7565b5b0180546105c190612f21565b80601f01602080910402602001604051908101604052809291908181526020018280546105ed90612f21565b80156106385780601f1061060f57610100808354040283529160200191610638565b820191905f5260205f20905b81548152906001019060200180831161061b57829003601f168201915b505050505090505f610649846112ed565b6040516020016106599190612fd5565b60405160208183030381529060405290505f843060405160200161067e92919061305b565b604051602081830303815290604052805190602001205f1c90505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fb1e7608585856040518463ffffffff1660e01b81526004016106f793929190613086565b5f60405180830381865afa158015610711573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906107399190613137565b90505f61074582611446565b90505f8160405160200161075991906131c8565b60405160208183030381529060405290505f856107758a6112ed565b8361077f8c6112ed565b60405160200161079294939291906133cd565b60405160208183030381529060405290505f6107ad82611446565b9050806040516020016107c0919061348b565b60405160208183030381529060405298505050505050505050919050565b5f6107e7611473565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561082c575061082a86826110cb565b155b156108705780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016108679291906134ac565b60405180910390fd5b61087d868686868661147a565b505050505050565b61088d61156e565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016108e89190612b8a565b602060405180830381865afa158015610903573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092791906134e7565b11610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095e9061355c565b60405180910390fd5b60215f9054906101000a900460ff16156109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad906135c4565b60405180910390fd5b600181101580156109c8575060198111155b610a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fe9061362c565b60405180910390fd5b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f205f9054906101000a900460ff1615610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790613694565b60405180910390fd5b600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550610b1f3382600160405180602001604052805f8152506115bd565b803373ffffffffffffffffffffffffffffffffffffffff167f987d620f307ff6b94d58743cb7a7509f24071586a77759b77c2d4e29f75a2f9a83604051610b66919061247f565b60405180910390a3610b76611652565b50565b60088160198110610b88575f80fd5b015f915090508054610b9990612f21565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc590612f21565b8015610c105780601f10610be757610100808354040283529160200191610c10565b820191905f5260205f20905b815481529060010190602001808311610bf357829003601f168201915b505050505081565b610c2061165c565b5f60215f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f5b65b0c1363b3003db9bcc5e1fd8805a6d6bf5bf6dc9d3431ee4494cd7d1176660405160405180910390a2565b60608151835114610cca57815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610cc19291906136b2565b60405180910390fd5b5f835167ffffffffffffffff811115610ce657610ce561260a565b5b604051908082528060200260200182016040528015610d145781602001602082028036833780820191505090505b5090505f5b8451811015610d7a57610d50610d3882876116e390919063ffffffff16565b610d4b83876116f690919063ffffffff16565b61040b565b828281518110610d6357610d62612ec7565b5b602002602001018181525050806001019050610d19565b508091505092915050565b601981565b60215f9054906101000a900460ff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610dc961165c565b610dd25f611709565b565b610ddc61165c565b600160215f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f81990fd9a5c552b8e3677917d8a03c07678f0d2cb68f88b634aca2022e9bd19f60405160405180910390a2565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e9a610e93611473565b83836117cc565b5050565b610ea661165c565b60018210158015610eb8575060198211155b610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee9061362c565b60405180910390fd5b5f815111610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613723565b60405180910390fd5b806008600184610f4a9190612e94565b60198110610f5b57610f5a612ec7565b5b019081610f6891906138d5565b50817f2c881f99fde5a1598df2de54aef259d7f03d65b8d57497d81bf9c7e5488f054382604051610f9991906125e6565b60405180910390a25050565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b610fd761165c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906139ee565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f31f0181b0d2d712e1ebecab98b9c8368abe70c4be2609c828f4d67ab5d09f17a60405160405180910390a250565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f611162611473565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156111a757506111a586826110cb565b155b156111eb5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016111e29291906134ac565b60405180910390fd5b6111f88686868686611935565b505050505050565b61120861165c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611278575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161126f9190612b8a565b60405180910390fd5b61128181611709565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60605f8203611333576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611441565b5f8290505f5b5f821461136257808061134b90613a0c565b915050600a8261135b9190613a80565b9150611339565b5f8167ffffffffffffffff81111561137d5761137c61260a565b5b6040519080825280601f01601f1916602001820160405280156113af5781602001600182028036833780820191505090505b5090505b5f851461143a576001826113c79190612e94565b9150600a856113d69190613ab0565b60306113e29190613ae0565b60f81b8183815181106113f8576113f7612ec7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a856114339190613a80565b94506113b3565b8093505050505b919050565b606061146c82604051806060016040528060408152602001613d84604091396001611a3b565b9050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114ea575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114e19190612b8a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361155a575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016115519190612b8a565b60405180910390fd5b6115678585858585611bca565b5050505050565b6002600454036115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90613b5d565b60405180910390fd5b6002600481905550565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361162d575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116249190612b8a565b60405180910390fd5b5f806116398585611c76565b9150915061164a5f87848487611bca565b505050505050565b6001600481905550565b611664611473565b73ffffffffffffffffffffffffffffffffffffffff16611682610e60565b73ffffffffffffffffffffffffffffffffffffffff16146116e1576116a5611473565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116d89190612b8a565b60405180910390fd5b565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183c575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016118339190612b8a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119289190612532565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119a5575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161199c9190612b8a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611a15575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611a0c9190612b8a565b60405180910390fd5b5f80611a218585611c76565b91509150611a328787848487611bca565b50505050505050565b60605f845103611a5b5760405180602001604052805f8152509050611bc3565b5f82611a8c576003600286516004611a739190613b7b565b611a7d9190613ae0565b611a879190613a80565b611ab3565b600360028651611a9c9190613ae0565b611aa69190613a80565b6004611ab29190613b7b565b5b90505f8167ffffffffffffffff811115611ad057611acf61260a565b5b6040519080825280601f01601f191660200182016040528015611b025781602001600182028036833780820191505090505b509050600185016020820187885189016020810180515f82525b82841015611b77576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050611b1c565b8082528915611bb75760038c510660018114611b9a5760028114611bad57611bb5565b603d6001870353603d6002870353611bb5565b603d60018703535b505b50505050505080925050505b9392505050565b611bd685858585611ca6565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611c6f575f611c12611473565b90506001845103611c5e575f611c315f866116f690919063ffffffff16565b90505f611c475f866116f690919063ffffffff16565b9050611c57838989858589612036565b5050611c6d565b611c6c8187878787876121e5565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b8051825114611cf057815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611ce79291906136b2565b60405180910390fd5b5f611cf9611473565b90505f5b8351811015611ef5575f611d1a82866116f690919063ffffffff16565b90505f611d3083866116f690919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611e53575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611dff57888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611df69493929190613bbc565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611ee857805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ee09190613ae0565b925050819055505b5050806001019050611cfd565b506001835103611fb0575f611f135f856116f690919063ffffffff16565b90505f611f295f856116f690919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611fa19291906136b2565b60405180910390a4505061202f565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612026929190613bff565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b11156121dd578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612096959493929190613c86565b6020604051808303815f875af19250505080156120d157506040513d601f19601f820116820180604052508101906120ce9190613cf2565b60015b612152573d805f81146120ff576040519150601f19603f3d011682016040523d82523d5f602084013e612104565b606091505b505f81510361214a57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016121419190612b8a565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146121db57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016121d29190612b8a565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b111561238c578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612245959493929190613d1d565b6020604051808303815f875af192505050801561228057506040513d601f19601f8201168201806040525081019061227d9190613cf2565b60015b612301573d805f81146122ae576040519150601f19603f3d011682016040523d82523d5f602084013e6122b3565b606091505b505f8151036122f957846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016122f09190612b8a565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461238a57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016123819190612b8a565b60405180910390fd5b505b505050505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123ce826123a5565b9050919050565b6123de816123c4565b81146123e8575f80fd5b50565b5f813590506123f9816123d5565b92915050565b5f819050919050565b612411816123ff565b811461241b575f80fd5b50565b5f8135905061242c81612408565b92915050565b5f80604083850312156124485761244761239d565b5b5f612455858286016123eb565b92505060206124668582860161241e565b9150509250929050565b612479816123ff565b82525050565b5f6020820190506124925f830184612470565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124cc81612498565b81146124d6575f80fd5b50565b5f813590506124e7816124c3565b92915050565b5f602082840312156125025761250161239d565b5b5f61250f848285016124d9565b91505092915050565b5f8115159050919050565b61252c81612518565b82525050565b5f6020820190506125455f830184612523565b92915050565b5f602082840312156125605761255f61239d565b5b5f61256d8482850161241e565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6125b882612576565b6125c28185612580565b93506125d2818560208601612590565b6125db8161259e565b840191505092915050565b5f6020820190508181035f8301526125fe81846125ae565b905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126408261259e565b810181811067ffffffffffffffff8211171561265f5761265e61260a565b5b80604052505050565b5f612671612394565b905061267d8282612637565b919050565b5f67ffffffffffffffff82111561269c5761269b61260a565b5b602082029050602081019050919050565b5f80fd5b5f6126c36126be84612682565b612668565b905080838252602082019050602084028301858111156126e6576126e56126ad565b5b835b8181101561270f57806126fb888261241e565b8452602084019350506020810190506126e8565b5050509392505050565b5f82601f83011261272d5761272c612606565b5b813561273d8482602086016126b1565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156127645761276361260a565b5b61276d8261259e565b9050602081019050919050565b828183375f83830152505050565b5f61279a6127958461274a565b612668565b9050828152602081018484840111156127b6576127b5612746565b5b6127c184828561277a565b509392505050565b5f82601f8301126127dd576127dc612606565b5b81356127ed848260208601612788565b91505092915050565b5f805f805f60a0868803121561280f5761280e61239d565b5b5f61281c888289016123eb565b955050602061282d888289016123eb565b945050604086013567ffffffffffffffff81111561284e5761284d6123a1565b5b61285a88828901612719565b935050606086013567ffffffffffffffff81111561287b5761287a6123a1565b5b61288788828901612719565b925050608086013567ffffffffffffffff8111156128a8576128a76123a1565b5b6128b4888289016127c9565b9150509295509295909350565b5f67ffffffffffffffff8211156128db576128da61260a565b5b602082029050602081019050919050565b5f6128fe6128f9846128c1565b612668565b90508083825260208201905060208402830185811115612921576129206126ad565b5b835b8181101561294a578061293688826123eb565b845260208401935050602081019050612923565b5050509392505050565b5f82601f83011261296857612967612606565b5b81356129788482602086016128ec565b91505092915050565b5f80604083850312156129975761299661239d565b5b5f83013567ffffffffffffffff8111156129b4576129b36123a1565b5b6129c085828601612954565b925050602083013567ffffffffffffffff8111156129e1576129e06123a1565b5b6129ed85828601612719565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a29816123ff565b82525050565b5f612a3a8383612a20565b60208301905092915050565b5f602082019050919050565b5f612a5c826129f7565b612a668185612a01565b9350612a7183612a11565b805f5b83811015612aa1578151612a888882612a2f565b9750612a9383612a46565b925050600181019050612a74565b5085935050505092915050565b5f6020820190508181035f830152612ac68184612a52565b905092915050565b5f819050919050565b5f612af1612aec612ae7846123a5565b612ace565b6123a5565b9050919050565b5f612b0282612ad7565b9050919050565b5f612b1382612af8565b9050919050565b612b2381612b09565b82525050565b5f602082019050612b3c5f830184612b1a565b92915050565b5f612b4c82612af8565b9050919050565b612b5c81612b42565b82525050565b5f602082019050612b755f830184612b53565b92915050565b612b84816123c4565b82525050565b5f602082019050612b9d5f830184612b7b565b92915050565b612bac81612518565b8114612bb6575f80fd5b50565b5f81359050612bc781612ba3565b92915050565b5f8060408385031215612be357612be261239d565b5b5f612bf0858286016123eb565b9250506020612c0185828601612bb9565b9150509250929050565b5f67ffffffffffffffff821115612c2557612c2461260a565b5b612c2e8261259e565b9050602081019050919050565b5f612c4d612c4884612c0b565b612668565b905082815260208101848484011115612c6957612c68612746565b5b612c7484828561277a565b509392505050565b5f82601f830112612c9057612c8f612606565b5b8135612ca0848260208601612c3b565b91505092915050565b5f8060408385031215612cbf57612cbe61239d565b5b5f612ccc8582860161241e565b925050602083013567ffffffffffffffff811115612ced57612cec6123a1565b5b612cf985828601612c7c565b9150509250929050565b5f60208284031215612d1857612d1761239d565b5b5f612d25848285016123eb565b91505092915050565b5f8060408385031215612d4457612d4361239d565b5b5f612d51858286016123eb565b9250506020612d62858286016123eb565b9150509250929050565b5f805f805f60a08688031215612d8557612d8461239d565b5b5f612d92888289016123eb565b9550506020612da3888289016123eb565b9450506040612db48882890161241e565b9350506060612dc58882890161241e565b925050608086013567ffffffffffffffff811115612de657612de56123a1565b5b612df2888289016127c9565b9150509295509295909350565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e005f82015250565b5f612e33601f83612580565b9150612e3e82612dff565b602082019050919050565b5f6020820190508181035f830152612e6081612e27565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e9e826123ff565b9150612ea9836123ff565b9250828203905081811115612ec157612ec0612e67565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612f3857607f821691505b602082108103612f4b57612f4a612ef4565b5b50919050565b5f81905092915050565b7f4368726973746d617320446179200000000000000000000000000000000000005f82015250565b5f612f8f600e83612f51565b9150612f9a82612f5b565b600e82019050919050565b5f612faf82612576565b612fb98185612f51565b9350612fc9818560208601612590565b80840191505092915050565b5f612fdf82612f83565b9150612feb8284612fa5565b915081905092915050565b5f819050919050565b61301061300b826123ff565b612ff6565b82525050565b5f8160601b9050919050565b5f61302c82613016565b9050919050565b5f61303d82613022565b9050919050565b613055613050826123c4565b613033565b82525050565b5f6130668285612fff565b6020820191506130768284613044565b6014820191508190509392505050565b5f6060820190508181035f83015261309e81866125ae565b905081810360208301526130b281856125ae565b90506130c16040830184612470565b949350505050565b5f6130db6130d684612c0b565b612668565b9050828152602081018484840111156130f7576130f6612746565b5b613102848285612590565b509392505050565b5f82601f83011261311e5761311d612606565b5b815161312e8482602086016130c9565b91505092915050565b5f6020828403121561314c5761314b61239d565b5b5f82015167ffffffffffffffff811115613169576131686123a1565b5b6131758482850161310a565b91505092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000005f82015250565b5f6131b2601a83612f51565b91506131bd8261317e565b601a82019050919050565b5f6131d2826131a6565b91506131de8284612fa5565b915081905092915050565b7f7b226e616d65223a2022000000000000000000000000000000000000000000005f82015250565b5f61321d600a83612f51565b9150613228826131e9565b600a82019050919050565b7f222c20226465736372697074696f6e223a202241207370656369616c204368725f8201527f6973746d617320416476656e742043616c656e646172204e465420666f72206460208201527f6179200000000000000000000000000000000000000000000000000000000000604082015250565b5f6132b3604383612f51565b91506132be82613233565b604382019050919050565b7f222c2022696d616765223a2022000000000000000000000000000000000000005f82015250565b5f6132fd600d83612f51565b9150613308826132c9565b600d82019050919050565b7f222c202261747472696275746573223a205b7b2274726169745f74797065223a5f8201527f2022446179222c202276616c7565223a20220000000000000000000000000000602082015250565b5f61336d603283612f51565b915061337882613313565b603282019050919050565b7f227d5d7d000000000000000000000000000000000000000000000000000000005f82015250565b5f6133b7600483612f51565b91506133c282613383565b600482019050919050565b5f6133d782613211565b91506133e38287612fa5565b91506133ee826132a7565b91506133fa8286612fa5565b9150613405826132f1565b91506134118285612fa5565b915061341c82613361565b91506134288284612fa5565b9150613433826133ab565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f613475601d83612f51565b915061348082613441565b601d82019050919050565b5f61349582613469565b91506134a18284612fa5565b915081905092915050565b5f6040820190506134bf5f830185612b7b565b6134cc6020830184612b7b565b9392505050565b5f815190506134e181612408565b92915050565b5f602082840312156134fc576134fb61239d565b5b5f613509848285016134d3565b91505092915050565b7f4d75737420686f6c642043687269737420746f6b656e7320746f20636c61696d5f82015250565b5f613546602083612580565b915061355182613512565b602082019050919050565b5f6020820190508181035f8301526135738161353a565b9050919050565b7f436f6e74726163742069732070617573656400000000000000000000000000005f82015250565b5f6135ae601283612580565b91506135b98261357a565b602082019050919050565b5f6020820190508181035f8301526135db816135a2565b9050919050565b7f496e76616c6964206461790000000000000000000000000000000000000000005f82015250565b5f613616600b83612580565b9150613621826135e2565b602082019050919050565b5f6020820190508181035f8301526136438161360a565b9050919050565b7f416c726561647920636c61696d656420666f72207468697320646179000000005f82015250565b5f61367e601c83612580565b91506136898261364a565b602082019050919050565b5f6020820190508181035f8301526136ab81613672565b9050919050565b5f6040820190506136c55f830185612470565b6136d26020830184612470565b9392505050565b7f4772656574696e672063616e6e6f7420626520656d70747900000000000000005f82015250565b5f61370d601883612580565b9150613718826136d9565b602082019050919050565b5f6020820190508181035f83015261373a81613701565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261379d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613762565b6137a78683613762565b95508019841693508086168417925050509392505050565b5f6137d96137d46137cf846123ff565b612ace565b6123ff565b9050919050565b5f819050919050565b6137f2836137bf565b6138066137fe826137e0565b84845461376e565b825550505050565b5f90565b61381a61380e565b6138258184846137e9565b505050565b5b818110156138485761383d5f82613812565b60018101905061382b565b5050565b601f82111561388d5761385e81613741565b61386784613753565b81016020851015613876578190505b61388a61388285613753565b83018261382a565b50505b505050565b5f82821c905092915050565b5f6138ad5f1984600802613892565b1980831691505092915050565b5f6138c5838361389e565b9150826002028217905092915050565b6138de82612576565b67ffffffffffffffff8111156138f7576138f661260a565b5b6139018254612f21565b61390c82828561384c565b5f60209050601f83116001811461393d575f841561392b578287015190505b61393585826138ba565b86555061399c565b601f19841661394b86613741565b5f5b828110156139725784890151825560018201915060208501945060208101905061394d565b8683101561398f578489015161398b601f89168261389e565b8355505b6001600288020188555050505b505050505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6139d8600f83612580565b91506139e3826139a4565b602082019050919050565b5f6020820190508181035f830152613a05816139cc565b9050919050565b5f613a16826123ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a4857613a47612e67565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a8a826123ff565b9150613a95836123ff565b925082613aa557613aa4613a53565b5b828204905092915050565b5f613aba826123ff565b9150613ac5836123ff565b925082613ad557613ad4613a53565b5b828206905092915050565b5f613aea826123ff565b9150613af5836123ff565b9250828201905080821115613b0d57613b0c612e67565b5b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613b47601f83612580565b9150613b5282613b13565b602082019050919050565b5f6020820190508181035f830152613b7481613b3b565b9050919050565b5f613b85826123ff565b9150613b90836123ff565b9250828202613b9e816123ff565b91508282048414831517613bb557613bb4612e67565b5b5092915050565b5f608082019050613bcf5f830187612b7b565b613bdc6020830186612470565b613be96040830185612470565b613bf66060830184612470565b95945050505050565b5f6040820190508181035f830152613c178185612a52565b90508181036020830152613c2b8184612a52565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f613c5882613c34565b613c628185613c3e565b9350613c72818560208601612590565b613c7b8161259e565b840191505092915050565b5f60a082019050613c995f830188612b7b565b613ca66020830187612b7b565b613cb36040830186612470565b613cc06060830185612470565b8181036080830152613cd28184613c4e565b90509695505050505050565b5f81519050613cec816124c3565b92915050565b5f60208284031215613d0757613d0661239d565b5b5f613d1484828501613cde565b91505092915050565b5f60a082019050613d305f830188612b7b565b613d3d6020830187612b7b565b8181036040830152613d4f8186612a52565b90508181036060830152613d638185612a52565b90508181036080830152613d778184613c4e565b9050969550505050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220a6d6f6f31bdd59d0d3e93c028f6b322b7c9d8f594bdc543abed15b66305f905564736f6c634300081a003344617920353a204d617920796f75722064617973206265206d657272792c206272696768742c20616e6420244348524953542d6675656c6564214461792032333a205477696e6b6c65207477696e6b6c652c20244348524953542073746172214461792031393a204d617920796f75722024434852495354206272696e6720796f75206a6f792064617920616e64206e69676874214461792031373a204465636b207468652068616c6c732077697468202443485249535420616e64206a6f796f75732063616c6c73214461792031363a20427269616e27732073756363657373206973206e6f20736563726574202443485249535420697320796f75727320746f6f214461792032353a204d65727279204368726973746d617321204c6574202443485249535420746f6b656e73206272696e6720796f752063686565722144617920343a2057697368696e6720796f75206120424153452d746173746963204368726973746d61732066696c6c6564207769746820244348524953542063686565722144617920363a20446f6e27742062652061204772696e636820636c61696d20796f7572202443485249535420616476656e742073757270726973652144617920393a2053656e64696e67202443485249535420766962657320796f7572207761792074686973206665737469766520736561736f6e214461792031313a204576656e20427269616e206b6e6f7773202443485249535420697320746865207265616c2067696674207468697320736561736f6e214461792031333a204b656570206974206a6f6c6c792077697468202443485249535420616e64206665737469766520666f6c6c792144617920383a20556e7772617020796f7572202443485249535420746f6b656e20616e6420756e7772617020736f6d65206a6f792144617920323a2052656d656d6265722c206576656e20427269616e2041726d7374726f6e672063616e2774206869646520686973207375636365737320756e646572207468617420686174214461792031383a20486f20486f20486f6c6420796f7572202443485249535420746f6b656e73207469676874214461792032313a204d6179202443485249535420746f6b656e73206d616b6520796f7572207370697269747320627269676874214461792031343a204d617920796f757220244348524953542062616c616e63652062652061732066756c6c2061732053616e7461277320736c65696768214461792031303a204d617920796f7572202443485249535420686f6c64696e67732067726f7720617320796f757220686f6c69646179206a6f7920646f6573214461792031323a204c6574202443485249535420746f6b656e732061646420737061726b6c6520746f20796f7572204368726973746d617320747265652144617920333a204b6565702063616c6d20616e6420686f6c6420796f757220244348524953542074696768742144617920313a204d617920796f7572202443485249535420746f6b656e73207368696e652061732062726967687420617320796f757220686f6c69646179207370697269742144617920373a20427269616e27732062616c642068656164207265666c656374732074686520627269676874206c6967687473206f66204368726973746d6173214461792031353a2043686565727320746f206120244348524953542d66696c6c656420686f6c69646179207769746820667269656e647320616e642066756e214461792032323a20536c6569676820796f7572206461792077697468202443485249535420616e6420686f6c6964617920706c6179214461792032343a20416c6d6f737420746865726521204b65657020796f7572202443485249535420746f6b656e73206e656172214461792032303a20526f636b2061726f756e6420746865204368726973746d617320747265652077697468202443485249535420676c656521000000000000000000000000121837a9a7fd24644da6b297105bd3119dc03b56000000000000000000000000beb6b6d43835b0fbf7b80f9ca4051cedcdc0d49c