13 txs
35 calls
constructor
constructor(string _name, string _symbol, string _standardBaseURI, string _goldBaseURI, uint256 _tokensPerBox, uint256 _feeBPS, uint256 _startTimestamp, address _meme, address _unboxed, address _treasury, address _vrfWrapper)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
feeBPS
viewfunction feeBPS() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getBalance
viewfunction getBalance() view returns (uint256)
getLinkToken
viewfunction getLinkToken() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
goldBaseURI
viewfunction goldBaseURI() view returns (string)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
i_vrfV2PlusWrapper
viewfunction i_vrfV2PlusWrapper() view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isGold
viewfunction isGold(uint256) view returns (bool)
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
MAX_SUPPLY
viewfunction MAX_SUPPLY() view returns (uint256)
meme
viewfunction meme() view returns (address)
MINT_LIMIT
viewfunction MINT_LIMIT() view returns (uint256)
name
viewfunction name() view returns (string)
NUM_WORDS
viewfunction NUM_WORDS() view returns (uint32)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
randomnessReceived
viewfunction randomnessReceived(uint256) view returns (bool)
randomnessRequested
viewfunction randomnessRequested(uint256) view returns (bool)
REQUEST_CONFIRMATIONS
viewfunction REQUEST_CONFIRMATIONS() view returns (uint16)
requestIdToBoxRange
viewfunction requestIdToBoxRange(uint256) view returns (uint256 startTokenId, uint256 quantity)
standardBaseURI
viewfunction standardBaseURI() view returns (string)
startTimestamp
viewfunction startTimestamp() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokensPerBox
viewfunction tokensPerBox() view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
unboxed
viewfunction unboxed() view returns (address)
approve
nonpayablefunction approve(address to, uint256 tokenId)
box
payablefunction box(uint256 _quantity, bool _vrf) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
rawFulfillRandomWords
nonpayablefunction rawFulfillRandomWords(uint256 _requestId, uint256[] _randomWords)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setFeeBPS
nonpayablefunction setFeeBPS(uint256 _feeBPS)
setStartTimestamp
nonpayablefunction setStartTimestamp(uint256 _startTimestamp)
setTokensPerBox
nonpayablefunction setTokensPerBox(uint256 _tokensPerBox)
setTreasury
nonpayablefunction setTreasury(address _treasury)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
unbox
nonpayablefunction unbox(uint256[] _tokenIds)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
FeeBPSSet
event FeeBPSSet(uint256 oldFeeBPS, uint256 newFeeBPS)
GoldStatusSet
event GoldStatusSet(uint256 tokenId)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
StartTimestampSet
event StartTimestampSet(uint256 oldStartTimestamp, uint256 newStartTimestamp)
TokensPerBoxSet
event TokensPerBoxSet(uint256 oldTokensPerBox, uint256 newTokensPerBox)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TreasurySet
event TreasurySet(address indexed oldTreasury, address indexed newTreasury)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
OnlyVRFWrapperCanFulfill
error OnlyVRFWrapperCanFulfill(address have, address want)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60c060405234801561001057600080fd5b5060405161622138038061622183398181016040528101906100329190610763565b808b8b81600090816100449190610ade565b5080600190816100549190610ade565b5050506001600b8190555060008190508073ffffffffffffffffffffffffffffffffffffffff16631c4695f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d39190610bb0565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505050506127108610610180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017790610c3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036101ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e690610ca6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361025e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025590610d12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c490610d7e565b60405180910390fd5b6102e06000801b336103e960201b60201c565b5088600f90816102f09190610ade565b5087601090816103009190610ade565b5086601281905550856013819055508460148190555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050505050610d9e565b60006103fb83836104e760201b60201c565b6104dc576001600a600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061047961055260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506104e1565b600090505b92915050565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6105c182610578565b810181811067ffffffffffffffff821117156105e0576105df610589565b5b80604052505050565b60006105f361055a565b90506105ff82826105b8565b919050565b600067ffffffffffffffff82111561061f5761061e610589565b5b61062882610578565b9050602081019050919050565b60005b83811015610653578082015181840152602081019050610638565b60008484015250505050565b600061067261066d84610604565b6105e9565b90508281526020810184848401111561068e5761068d610573565b5b610699848285610635565b509392505050565b600082601f8301126106b6576106b561056e565b5b81516106c684826020860161065f565b91505092915050565b6000819050919050565b6106e2816106cf565b81146106ed57600080fd5b50565b6000815190506106ff816106d9565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061073082610705565b9050919050565b61074081610725565b811461074b57600080fd5b50565b60008151905061075d81610737565b92915050565b60008060008060008060008060008060006101608c8e03121561078957610788610564565b5b60008c015167ffffffffffffffff8111156107a7576107a6610569565b5b6107b38e828f016106a1565b9b505060208c015167ffffffffffffffff8111156107d4576107d3610569565b5b6107e08e828f016106a1565b9a505060408c015167ffffffffffffffff81111561080157610800610569565b5b61080d8e828f016106a1565b99505060608c015167ffffffffffffffff81111561082e5761082d610569565b5b61083a8e828f016106a1565b985050608061084b8e828f016106f0565b97505060a061085c8e828f016106f0565b96505060c061086d8e828f016106f0565b95505060e061087e8e828f0161074e565b9450506101006108908e828f0161074e565b9350506101206108a28e828f0161074e565b9250506101406108b48e828f0161074e565b9150509295989b509295989b9093969950565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061091957607f821691505b60208210810361092c5761092b6108d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026109947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610957565b61099e8683610957565b95508019841693508086168417925050509392505050565b6000819050919050565b60006109db6109d66109d1846106cf565b6109b6565b6106cf565b9050919050565b6000819050919050565b6109f5836109c0565b610a09610a01826109e2565b848454610964565b825550505050565b600090565b610a1e610a11565b610a298184846109ec565b505050565b5b81811015610a4d57610a42600082610a16565b600181019050610a2f565b5050565b601f821115610a9257610a6381610932565b610a6c84610947565b81016020851015610a7b578190505b610a8f610a8785610947565b830182610a2e565b50505b505050565b600082821c905092915050565b6000610ab560001984600802610a97565b1980831691505092915050565b6000610ace8383610aa4565b9150826002028217905092915050565b610ae7826108c7565b67ffffffffffffffff811115610b0057610aff610589565b5b610b0a8254610901565b610b15828285610a51565b600060209050601f831160018114610b485760008415610b36578287015190505b610b408582610ac2565b865550610ba8565b601f198416610b5686610932565b60005b82811015610b7e57848901518255600182019150602085019450602081019050610b59565b86831015610b9b5784890151610b97601f891682610aa4565b8355505b6001600288020188555050505b505050505050565b600060208284031215610bc657610bc5610564565b5b6000610bd48482850161074e565b91505092915050565b600082825260208201905092915050565b7f496e76616c696420666565204250530000000000000000000000000000000000600082015250565b6000610c24600f83610bdd565b9150610c2f82610bee565b602082019050919050565b60006020820190508181036000830152610c5381610c17565b9050919050565b7f496e76616c6964206d656d652061646472657373000000000000000000000000600082015250565b6000610c90601483610bdd565b9150610c9b82610c5a565b602082019050919050565b60006020820190508181036000830152610cbf81610c83565b9050919050565b7f496e76616c696420756e626f7865642061646472657373000000000000000000600082015250565b6000610cfc601783610bdd565b9150610d0782610cc6565b602082019050919050565b60006020820190508181036000830152610d2b81610cef565b9050919050565b7f496e76616c696420747265617375727920616464726573730000000000000000600082015250565b6000610d68601883610bdd565b9150610d7382610d32565b602082019050919050565b60006020820190508181036000830152610d9781610d5b565b9050919050565b60805160a051615449610dd860003960008181610f3c015281816116d90152818161320701526132a501526000611d7e01526154496000f3fe6080604052600436106102ad5760003560e01c80636352211e11610175578063b5fd6e0e116100dc578063e555792111610095578063e985e9c51161006f578063e985e9c514610b05578063f0f4426014610b42578063f196990814610b6b578063fd967f4714610b94576102ad565b8063e555792114610a72578063e6fd48bc14610aaf578063e76d516814610ada576102ad565b8063b5fd6e0e14610951578063b88d4fde1461097c578063c44bef75146109a5578063c87b56dd146109ce578063d547741f14610a0b578063dd1f9b6a14610a34576102ad565b806395d89b411161012e57806395d89b411461084e578063988d002e146108795780639ed0868d146108b6578063a217fddf146108e1578063a22cb4651461090c578063b12d75fb14610935576102ad565b80636352211e1461071657806367f082b01461075357806370a082311461077e57806372cf6e34146107bb57806373a2a558146107e657806391d1485414610811576102ad565b80632e2258651161021957806342842e0e116101d257806342842e0e146105f457806344097c481461061d5780634878f78f146106485780634f6ccce714610685578063604b6a9c146106c257806361d027b3146106eb576102ad565b80632e225865146104e45780632f2ff15d1461050f5780632f745c591461053857806332cb6b0c1461057557806336568abe146105a05780633b43abf7146105c9576102ad565b806312065fe01161026b57806312065fe0146103d457806318160ddd146103ff5780631a1c6e531461042a5780631fe543e31461045557806323b872dd1461047e578063248a9ca3146104a7576102ad565b80626767c9146102b257806301ffc9a7146102db578063027752401461031857806306fdde0314610343578063081812fc1461036e578063095ea7b3146103ab575b600080fd5b3480156102be57600080fd5b506102d960048036038101906102d49190613d91565b610bbf565b005b3480156102e757600080fd5b5061030260048036038101906102fd9190613e36565b610e42565b60405161030f9190613e7e565b60405180910390f35b34801561032457600080fd5b5061032d610e54565b60405161033a9190613eb2565b60405180910390f35b34801561034f57600080fd5b50610358610e59565b6040516103659190613f5d565b60405180910390f35b34801561037a57600080fd5b5061039560048036038101906103909190613fab565b610eeb565b6040516103a29190614019565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190614060565b610f07565b005b3480156103e057600080fd5b506103e9610f1d565b6040516103f69190613eb2565b60405180910390f35b34801561040b57600080fd5b50610414610f25565b6040516104219190613eb2565b60405180910390f35b34801561043657600080fd5b5061043f610f32565b60405161044c9190613eb2565b60405180910390f35b34801561046157600080fd5b5061047c600480360381019061047791906141de565b610f38565b005b34801561048a57600080fd5b506104a560048036038101906104a0919061423a565b610fde565b005b3480156104b357600080fd5b506104ce60048036038101906104c991906142c3565b6110e0565b6040516104db91906142ff565b60405180910390f35b3480156104f057600080fd5b506104f9611100565b6040516105069190613f5d565b60405180910390f35b34801561051b57600080fd5b506105366004803603810190610531919061431a565b61118e565b005b34801561054457600080fd5b5061055f600480360381019061055a9190614060565b6111b0565b60405161056c9190613eb2565b60405180910390f35b34801561058157600080fd5b5061058a611259565b6040516105979190613eb2565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c2919061431a565b61125f565b005b3480156105d557600080fd5b506105de6112da565b6040516105eb9190613eb2565b60405180910390f35b34801561060057600080fd5b5061061b6004803603810190610616919061423a565b6112e0565b005b34801561062957600080fd5b50610632611300565b60405161063f91906143b9565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613fab565b611326565b60405161067c9190613e7e565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a79190613fab565b611346565b6040516106b99190613eb2565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613fab565b6113bc565b005b3480156106f757600080fd5b50610700611498565b60405161070d9190614019565b60405180910390f35b34801561072257600080fd5b5061073d60048036038101906107389190613fab565b6114be565b60405161074a9190614019565b60405180910390f35b34801561075f57600080fd5b506107686114d0565b60405161077591906143f1565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a0919061440c565b6114d5565b6040516107b29190613eb2565b60405180910390f35b3480156107c757600080fd5b506107d061158f565b6040516107dd9190614458565b60405180910390f35b3480156107f257600080fd5b506107fb611594565b6040516108089190614494565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061431a565b6115ba565b6040516108459190613e7e565b60405180910390f35b34801561085a57600080fd5b50610863611625565b6040516108709190613f5d565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b9190613fab565b6116b7565b6040516108ad9190613e7e565b60405180910390f35b3480156108c257600080fd5b506108cb6116d7565b6040516108d891906144d0565b60405180910390f35b3480156108ed57600080fd5b506108f66116fb565b60405161090391906142ff565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614517565b611702565b005b61094f600480360381019061094a9190614557565b611718565b005b34801561095d57600080fd5b50610966611a42565b6040516109739190613f5d565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e919061464c565b611ad0565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613fab565b611af5565b005b3480156109da57600080fd5b506109f560048036038101906109f09190613fab565b611b8d565b604051610a029190613f5d565b60405180910390f35b348015610a1757600080fd5b50610a326004803603810190610a2d919061431a565b611d0e565b005b348015610a4057600080fd5b50610a5b6004803603810190610a569190613fab565b611d30565b604051610a699291906146cf565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613fab565b611d54565b604051610aa69190613e7e565b60405180910390f35b348015610abb57600080fd5b50610ac4611d74565b604051610ad19190613eb2565b60405180910390f35b348015610ae657600080fd5b50610aef611d7a565b604051610afc9190614719565b60405180910390f35b348015610b1157600080fd5b50610b2c6004803603810190610b279190614734565b611da2565b604051610b399190613e7e565b60405180910390f35b348015610b4e57600080fd5b50610b696004803603810190610b64919061440c565b611e36565b005b348015610b7757600080fd5b50610b926004803603810190610b8d9190613fab565b611f73565b005b348015610ba057600080fd5b50610ba961204e565b604051610bb69190613eb2565b60405180910390f35b610bc7612054565b60005b82829050811015610db8576000838383818110610bea57610be9614774565b5b905060200201359050610bfc816114be565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c60906147ef565b60405180910390fd5b6017600082815260200190815260200160002060009054906101000a900460ff1615610cf0576018600082815260200190815260200160002060009054906101000a900460ff16610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690614881565b60405180910390fd5b5b610cf98161209a565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1a1beb433836015600086815260200190815260200160002060009054906101000a900460ff166040518463ffffffff1660e01b8152600401610d78939291906148a1565b600060405180830381600087803b158015610d9257600080fd5b505af1158015610da6573d6000803e3d6000fd5b50505050508080600101915050610bca565b5060006127106013546012540281610dd357610dd26148d8565b5b04601254039050610e35338484905083610ded9190614936565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121209092919063ffffffff16565b50610e3e61219f565b5050565b6000610e4d826121a9565b9050919050565b601481565b606060008054610e68906149a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610e94906149a7565b8015610ee15780601f10610eb657610100808354040283529160200191610ee1565b820191906000526020600020905b815481529060010190602001808311610ec457829003601f168201915b5050505050905090565b6000610ef682612223565b50610f00826122ab565b9050919050565b610f198282610f146122e8565b6122f0565b5050565b600047905090565b6000600880549050905090565b60135481565b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fcf5733816040517f8ba9316e000000000000000000000000000000000000000000000000000000008152600401610fc69291906149d8565b60405180910390fd5b610fd98383612302565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110505760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110479190614019565b60405180910390fd5b6000611064838361105f6122e8565b612465565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110da578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016110d193929190614a01565b60405180910390fd5b50505050565b6000600a6000838152602001908152602001600020600101549050919050565b6010805461110d906149a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611139906149a7565b80156111865780601f1061115b57610100808354040283529160200191611186565b820191906000526020600020905b81548152906001019060200180831161116957829003601f168201915b505050505081565b611197826110e0565b6111a08161247b565b6111aa838361248f565b50505050565b60006111bb836114d5565b82106112005782826040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526004016111f7929190614a38565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61271081565b6112676122e8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112d58282612581565b505050565b60125481565b6112fb83838360405180602001604052806000815250611ad0565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b6000611350610f25565b8210611396576000826040517fa57d13dc00000000000000000000000000000000000000000000000000000000815260040161138d929190614a38565b60405180910390fd5b600882815481106113aa576113a9614774565b5b90600052602060002001549050919050565b6000801b6113c98161247b565b6000600e541461140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590614ad3565b60405180910390fd5b6127108210611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990614b3f565b60405180910390fd5b7f0aaef8608b3df1287873db5f10d6c75dd686863f09237ba3791318e99f34c974601354836040516114859291906146cf565b60405180910390a1816013819055505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114c982612223565b9050919050565b600381565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115485760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161153f9190614019565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600181565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054611634906149a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611660906149a7565b80156116ad5780601f10611682576101008083540402835291602001916116ad565b820191906000526020600020905b81548152906001019060200180831161169057829003601f168201915b5050505050905090565b60186020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b81565b61171461170d6122e8565b8383612674565b5050565b611720612054565b601454421015611765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175c90614bab565b60405180910390fd5b600082118015611776575060148211155b6117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac90614c17565b60405180910390fd5b61271082600e546117c69190614c37565b1115611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90614cb7565b60405180910390fd5b60003411156118515780611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184790614d23565b60405180910390fd5b5b600080612710601354601254028161186c5761186b6148d8565b5b049150816012540390506000600e54905060005b858110156118e057818061189390614d43565b9250506118a033836127e3565b84156118d35760016017600084815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080600101915050611880565b5080600e81905550611942333087856118f99190614936565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612801909392919063ffffffff16565b6119be33601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687866119759190614936565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612801909392919063ffffffff16565b8315611a335760006119cf86612883565b90506040518060400160405280600188856119ea9190614d8b565b6119f49190614c37565b815260200187815250601660008381526020019081526020016000206000820151816000015560208201518160010155905050611a3133476128f4565b505b505050611a3e61219f565b5050565b600f8054611a4f906149a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611a7b906149a7565b8015611ac85780601f10611a9d57610100808354040283529160200191611ac8565b820191906000526020600020905b815481529060010190602001808311611aab57829003601f168201915b505050505081565b611adb848484610fde565b611aef611ae66122e8565b858585856129e3565b50505050565b6000801b611b028161247b565b6000600e5414611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e90614e31565b60405180910390fd5b7f9e12dc7d188286c431ebb2e51a13ed82994ddda57c6c0910c52120b3272321ec60145483604051611b7a9291906146cf565b60405180910390a1816014819055505050565b6060611b9882612223565b506017600083815260200190815260200160002060009054906101000a900460ff1615611c20576018600083815260200190815260200160002060009054906101000a900460ff16611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1690614e9d565b60405180910390fd5b5b60006015600084815260200190815260200160002060009054906101000a900460ff16611c4e57600f611c51565b60105b8054611c5c906149a7565b80601f0160208091040260200160405190810160405280929190818152602001828054611c88906149a7565b8015611cd55780601f10611caa57610100808354040283529160200191611cd5565b820191906000526020600020905b815481529060010190602001808311611cb857829003601f168201915b5050505050905080611ce684612b94565b604051602001611cf7929190614f1f565b604051602081830303815290604052915050919050565b611d17826110e0565b611d208161247b565b611d2a8383612581565b50505050565b60166020528060005260406000206000915090508060000154908060010154905082565b60176020528060005260406000206000915054906101000a900460ff1681565b60145481565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b611e438161247b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea990614f9e565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f21eb548722a564f6e09f039f7aa858ae94c911910f3823b37af2250eeca4f40360405160405180910390a381601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000801b611f808161247b565b6000600e5414611fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbc90615030565b60405180910390fd5b60008211612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff9061509c565b60405180910390fd5b7f5a666ccd775c376ab42b7492a5f28a10a1979e9663e05c90462053a13e745dd56012548360405161203b9291906146cf565b60405180910390a1816012819055505050565b61271081565b6002600b5403612090576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600b81905550565b60006120a96000836000612465565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211c57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016121139190613eb2565b60405180910390fd5b5050565b61219a838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612153929190614a38565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c62565b505050565b6001600b81905550565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061221c575061221b82612d04565b5b9050919050565b60008061222f83612d7e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122a257826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016122999190613eb2565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6122fd8383836001612dbb565b505050565b60008160008151811061231857612317614774565b5b6020026020010151905060006016600085815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050905060005b816020015181101561245e5760008183600001516123799190614c37565b905060016018600083815260200190815260200160002060006101000a81548160ff021916908315150217905550600084836040516020016123bc9291906146cf565b6040516020818303038152906040528051906020012060001c905060006064826123e691906150bc565b0361244f5760016015600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507fec13edb885bb5fd7f56f15dbc38072f80330fcd9ae7b7393bbd7f60f55218385826040516124469190613eb2565b60405180910390a15b5050808060010191505061235b565b5050505050565b6000612472848484612f80565b90509392505050565b61248c816124876122e8565b61309d565b50565b600061249b83836115ba565b612576576001600a600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506125136122e8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061257b565b600090505b92915050565b600061258d83836115ba565b15612669576000600a600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506126066122e8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061266e565b600090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126e557816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016126dc9190614019565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516127d69190613e7e565b60405180910390a3505050565b6127fd8282604051806020016040528060008152506130ee565b5050565b61287d848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612836939291906150ed565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c62565b50505050565b6000806128b68361c35063ffffffff1661289d9190614936565b620186a063ffffffff166128b19190614c37565b613112565b905060006128d460405180602001604052806001151581525061316a565b905060006128e6836003600185613202565b509050809350505050919050565b8047101561293b5747816040517fcf4791810000000000000000000000000000000000000000000000000000000081526004016129329291906146cf565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161296190615155565b60006040518083038185875af1925050503d806000811461299e576040519150601f19603f3d011682016040523d82523d6000602084013e6129a3565b606091505b50509050806129de576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115612b8d578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401612a4294939291906151bf565b6020604051808303816000875af1925050508015612a7e57506040513d601f19601f82011682018060405250810190612a7b9190615220565b60015b612b02573d8060008114612aae576040519150601f19603f3d011682016040523d82523d6000602084013e612ab3565b606091505b506000815103612afa57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612af19190614019565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612b8b57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401612b829190614019565b60405180910390fd5b505b5050505050565b606060006001612ba384613351565b01905060008167ffffffffffffffff811115612bc257612bc16140a0565b5b6040519080825280601f01601f191660200182016040528015612bf45781602001600182028036833780820191505090505b509050600082602001820190505b600115612c57578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612c4b57612c4a6148d8565b5b04945060008503612c02575b819350505050919050565b600080602060008451602086016000885af180612c85576040513d6000823e3d81fd5b3d925060005191505060008214612ca0576001811415612cbc565b60008473ffffffffffffffffffffffffffffffffffffffff163b145b15612cfe57836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612cf59190614019565b60405180910390fd5b50505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612d775750612d76826134a4565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080612df45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612f28576000612e0484612223565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e6f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612e825750612e808184611da2565b155b15612ec457826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401612ebb9190614019565b60405180910390fd5b8115612f2657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600080612f8e858585613586565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612fd257612fcd846137a0565b613011565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146130105761300f81856137e9565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036130535761304e846138d4565b613092565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146130915761309085856139a5565b5b5b809150509392505050565b6130a782826115ba565b6130ea5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016130e192919061524d565b60405180910390fd5b5050565b6130f88383613a30565b61310d6131036122e8565b60008585856129e3565b505050565b600063ffffffff8016821115613162576020826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016131599291906152be565b60405180910390fd5b819050919050565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa8260405160240161319e9190615312565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050919050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166313c34b7f87866040518363ffffffff1660e01b815260040161326092919061532d565b602060405180830381865afa15801561327d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a1919061536b565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639cfc058e82888888886040518663ffffffff1660e01b81526004016133039493929190615398565b60206040518083038185885af1158015613321573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613346919061536b565b915094509492505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106133af577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816133a5576133a46148d8565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106133ec576d04ee2d6d415b85acef810000000083816133e2576133e16148d8565b5b0492506020810190505b662386f26fc10000831061341b57662386f26fc100008381613411576134106148d8565b5b0492506010810190505b6305f5e1008310613444576305f5e100838161343a576134396148d8565b5b0492506008810190505b612710831061346957612710838161345f5761345e6148d8565b5b0492506004810190505b6064831061348c5760648381613482576134816148d8565b5b0492506002810190505b600a831061349b576001810190505b80915050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061356f57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061357f575061357e82613b29565b5b9050919050565b60008061359284612d7e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146135d4576135d3818486613b93565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461366557613616600085600080612dbb565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146136e8576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006137f4836114d5565b90506000600760008481526020019081526020016000205490506000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508282146138a05760008160008581526020019081526020016000205490508082600085815260200190815260200160002081905550826007600083815260200190815260200160002081905550505b6007600085815260200190815260200160002060009055806000848152602001908152602001600020600090555050505050565b600060016008805490506138e89190614d8b565b905060006009600084815260200190815260200160002054905060006008838154811061391857613917614774565b5b90600052602060002001549050806008838154811061393a57613939614774565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613989576139886153e4565b5b6001900381819060005260206000200160009055905550505050565b600060016139b2846114d5565b6139bc9190614d8b565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613aa25760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401613a999190614019565b60405180910390fd5b6000613ab083836000612465565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613b245760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401613b1b9190614019565b60405180910390fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613b9e838383613c57565b613c5257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613c1357806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401613c0a9190613eb2565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401613c49929190614a38565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613d0f57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613cd05750613ccf8484611da2565b5b80613d0e57508273ffffffffffffffffffffffffffffffffffffffff16613cf6836122ab565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112613d5157613d50613d2c565b5b8235905067ffffffffffffffff811115613d6e57613d6d613d31565b5b602083019150836020820283011115613d8a57613d89613d36565b5b9250929050565b60008060208385031215613da857613da7613d22565b5b600083013567ffffffffffffffff811115613dc657613dc5613d27565b5b613dd285828601613d3b565b92509250509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613e1381613dde565b8114613e1e57600080fd5b50565b600081359050613e3081613e0a565b92915050565b600060208284031215613e4c57613e4b613d22565b5b6000613e5a84828501613e21565b91505092915050565b60008115159050919050565b613e7881613e63565b82525050565b6000602082019050613e936000830184613e6f565b92915050565b6000819050919050565b613eac81613e99565b82525050565b6000602082019050613ec76000830184613ea3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f07578082015181840152602081019050613eec565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f2f82613ecd565b613f398185613ed8565b9350613f49818560208601613ee9565b613f5281613f13565b840191505092915050565b60006020820190508181036000830152613f778184613f24565b905092915050565b613f8881613e99565b8114613f9357600080fd5b50565b600081359050613fa581613f7f565b92915050565b600060208284031215613fc157613fc0613d22565b5b6000613fcf84828501613f96565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061400382613fd8565b9050919050565b61401381613ff8565b82525050565b600060208201905061402e600083018461400a565b92915050565b61403d81613ff8565b811461404857600080fd5b50565b60008135905061405a81614034565b92915050565b6000806040838503121561407757614076613d22565b5b60006140858582860161404b565b925050602061409685828601613f96565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6140d882613f13565b810181811067ffffffffffffffff821117156140f7576140f66140a0565b5b80604052505050565b600061410a613d18565b905061411682826140cf565b919050565b600067ffffffffffffffff821115614136576141356140a0565b5b602082029050602081019050919050565b600061415a6141558461411b565b614100565b9050808382526020820190506020840283018581111561417d5761417c613d36565b5b835b818110156141a657806141928882613f96565b84526020840193505060208101905061417f565b5050509392505050565b600082601f8301126141c5576141c4613d2c565b5b81356141d5848260208601614147565b91505092915050565b600080604083850312156141f5576141f4613d22565b5b600061420385828601613f96565b925050602083013567ffffffffffffffff81111561422457614223613d27565b5b614230858286016141b0565b9150509250929050565b60008060006060848603121561425357614252613d22565b5b60006142618682870161404b565b93505060206142728682870161404b565b925050604061428386828701613f96565b9150509250925092565b6000819050919050565b6142a08161428d565b81146142ab57600080fd5b50565b6000813590506142bd81614297565b92915050565b6000602082840312156142d9576142d8613d22565b5b60006142e7848285016142ae565b91505092915050565b6142f98161428d565b82525050565b600060208201905061431460008301846142f0565b92915050565b6000806040838503121561433157614330613d22565b5b600061433f858286016142ae565b92505060206143508582860161404b565b9150509250929050565b6000819050919050565b600061437f61437a61437584613fd8565b61435a565b613fd8565b9050919050565b600061439182614364565b9050919050565b60006143a382614386565b9050919050565b6143b381614398565b82525050565b60006020820190506143ce60008301846143aa565b92915050565b600061ffff82169050919050565b6143eb816143d4565b82525050565b600060208201905061440660008301846143e2565b92915050565b60006020828403121561442257614421613d22565b5b60006144308482850161404b565b91505092915050565b600063ffffffff82169050919050565b61445281614439565b82525050565b600060208201905061446d6000830184614449565b92915050565b600061447e82614386565b9050919050565b61448e81614473565b82525050565b60006020820190506144a96000830184614485565b92915050565b60006144ba82614386565b9050919050565b6144ca816144af565b82525050565b60006020820190506144e560008301846144c1565b92915050565b6144f481613e63565b81146144ff57600080fd5b50565b600081359050614511816144eb565b92915050565b6000806040838503121561452e5761452d613d22565b5b600061453c8582860161404b565b925050602061454d85828601614502565b9150509250929050565b6000806040838503121561456e5761456d613d22565b5b600061457c85828601613f96565b925050602061458d85828601614502565b9150509250929050565b600080fd5b600067ffffffffffffffff8211156145b7576145b66140a0565b5b6145c082613f13565b9050602081019050919050565b82818337600083830152505050565b60006145ef6145ea8461459c565b614100565b90508281526020810184848401111561460b5761460a614597565b5b6146168482856145cd565b509392505050565b600082601f83011261463357614632613d2c565b5b81356146438482602086016145dc565b91505092915050565b6000806000806080858703121561466657614665613d22565b5b60006146748782880161404b565b94505060206146858782880161404b565b935050604061469687828801613f96565b925050606085013567ffffffffffffffff8111156146b7576146b6613d27565b5b6146c38782880161461e565b91505092959194509250565b60006040820190506146e46000830185613ea3565b6146f16020830184613ea3565b9392505050565b600061470382614386565b9050919050565b614713816146f8565b82525050565b600060208201905061472e600083018461470a565b92915050565b6000806040838503121561474b5761474a613d22565b5b60006147598582860161404b565b925050602061476a8582860161404b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4d757374206f776e20746f6b656e496420746f20756e626f7800000000000000600082015250565b60006147d9601983613ed8565b91506147e4826147a3565b602082019050919050565b60006020820190508181036000830152614808816147cc565b9050919050565b7f43616e277420756e626f78206265666f7265205652462069732072656365697660008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600061486b602283613ed8565b91506148768261480f565b604082019050919050565b6000602082019050818103600083015261489a8161485e565b9050919050565b60006060820190506148b6600083018661400a565b6148c36020830185613ea3565b6148d06040830184613e6f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061494182613e99565b915061494c83613e99565b925082820261495a81613e99565b9150828204841483151761497157614970614907565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806149bf57607f821691505b6020821081036149d2576149d1614978565b5b50919050565b60006040820190506149ed600083018561400a565b6149fa602083018461400a565b9392505050565b6000606082019050614a16600083018661400a565b614a236020830185613ea3565b614a30604083018461400a565b949350505050565b6000604082019050614a4d600083018561400a565b614a5a6020830184613ea3565b9392505050565b7f43616e2774206368616e676520666565206166746572206669727374206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614abd602183613ed8565b9150614ac882614a61565b604082019050919050565b60006020820190508181036000830152614aec81614ab0565b9050919050565b7f496e76616c696420666565204250530000000000000000000000000000000000600082015250565b6000614b29600f83613ed8565b9150614b3482614af3565b602082019050919050565b60006020820190508181036000830152614b5881614b1c565b9050919050565b7f426f78696e67206e6f7420796574207374617274656400000000000000000000600082015250565b6000614b95601683613ed8565b9150614ba082614b5f565b602082019050919050565b60006020820190508181036000830152614bc481614b88565b9050919050565b7f496e76616c6964206d696e74207175616e746974790000000000000000000000600082015250565b6000614c01601583613ed8565b9150614c0c82614bcb565b602082019050919050565b60006020820190508181036000830152614c3081614bf4565b9050919050565b6000614c4282613e99565b9150614c4d83613e99565b9250828201905080821115614c6557614c64614907565b5b92915050565b7f4d617820737570706c7920726561636865640000000000000000000000000000600082015250565b6000614ca1601283613ed8565b9150614cac82614c6b565b602082019050919050565b60006020820190508181036000830152614cd081614c94565b9050919050565b7f4d75737420656e61626c652056524620746f2073656e64204554480000000000600082015250565b6000614d0d601b83613ed8565b9150614d1882614cd7565b602082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b6000614d4e82613e99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d8057614d7f614907565b5b600182019050919050565b6000614d9682613e99565b9150614da183613e99565b9250828203905081811115614db957614db8614907565b5b92915050565b7f43616e2774206368616e67652073746172742074696d6520616674657220666960008201527f727374206d696e74000000000000000000000000000000000000000000000000602082015250565b6000614e1b602883613ed8565b9150614e2682614dbf565b604082019050919050565b60006020820190508181036000830152614e4a81614e0e565b9050919050565b7f746f6b656e4964206973206177616974696e6720565246000000000000000000600082015250565b6000614e87601783613ed8565b9150614e9282614e51565b602082019050919050565b60006020820190508181036000830152614eb681614e7a565b9050919050565b600081905092915050565b6000614ed382613ecd565b614edd8185614ebd565b9350614eed818560208601613ee9565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815250565b6000614f2b8285614ec8565b9150614f378284614ec8565b9150614f4282614ef9565b6005820191508190509392505050565b7f496e76616c696420747265617375727920616464726573730000000000000000600082015250565b6000614f88601883613ed8565b9150614f9382614f52565b602082019050919050565b60006020820190508181036000830152614fb781614f7b565b9050919050565b7f43616e2774206368616e676520746f6b656e732070657220626f78206166746560008201527f72206669727374206d696e740000000000000000000000000000000000000000602082015250565b600061501a602c83613ed8565b915061502582614fbe565b604082019050919050565b600060208201905081810360008301526150498161500d565b9050919050565b7f496e76616c696420746f6b656e732070657220626f7800000000000000000000600082015250565b6000615086601683613ed8565b915061509182615050565b602082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b60006150c782613e99565b91506150d283613e99565b9250826150e2576150e16148d8565b5b828206905092915050565b6000606082019050615102600083018661400a565b61510f602083018561400a565b61511c6040830184613ea3565b949350505050565b600081905092915050565b50565b600061513f600083615124565b915061514a8261512f565b600082019050919050565b600061516082615132565b9150819050919050565b600081519050919050565b600082825260208201905092915050565b60006151918261516a565b61519b8185615175565b93506151ab818560208601613ee9565b6151b481613f13565b840191505092915050565b60006080820190506151d4600083018761400a565b6151e1602083018661400a565b6151ee6040830185613ea3565b81810360608301526152008184615186565b905095945050505050565b60008151905061521a81613e0a565b92915050565b60006020828403121561523657615235613d22565b5b60006152448482850161520b565b91505092915050565b6000604082019050615262600083018561400a565b61526f60208301846142f0565b9392505050565b6000819050919050565b600060ff82169050919050565b60006152a86152a361529e84615276565b61435a565b615280565b9050919050565b6152b88161528d565b82525050565b60006040820190506152d360008301856152af565b6152e06020830184613ea3565b9392505050565b6152f081613e63565b82525050565b60208201600082015161530c60008501826152e7565b50505050565b600060208201905061532760008301846152f6565b92915050565b60006040820190506153426000830185614449565b61534f6020830184614449565b9392505050565b60008151905061536581613f7f565b92915050565b60006020828403121561538157615380613d22565b5b600061538f84828501615356565b91505092915050565b60006080820190506153ad6000830187614449565b6153ba60208301866143e2565b6153c76040830185614449565b81810360608301526153d98184615186565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220821704b855dba4d99ef870927090d0a0acdae2c58f575f4f389fbe4fc2800aca64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000000000000000000000000000000000000000002ee0000000000000000000000000000000000000000000000000000000068652d500000000000000000000000006982508145454ce325ddbe47a25d4ec3d2311933000000000000000000000000006f8a156418f37834e2fb3995c666bafbf4b65e000000000000000000000000c7118a12ba9a6af2130046f2d6473ef923fd9d0100000000000000000000000002aae1a04f9828517b3007f83f6181900cad910c000000000000000000000000000000000000000000000000000000000000000a426f786564205065706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000562504550450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656962326c783761376b6f736d36627035377a3763626b706d7a74666b6c67753772676435793665676c6932777373746c6b756d6a712f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656963636f6c646e6e69716e737762346f356635766d696132677a6b7773357a7269797769336f3763706d617a327a366b7a747933752f0000000000000000000000000000000000000000000000000000000000