@boostxyz/cli 1.3.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),y=require("../utils-CQC0lDOX.cjs"),l0="hh-sol-artifact-1",m0="ContractAction",T0="contracts/actions/ContractAction.sol",v0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],w0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",M0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea264697066735822122033ff15dffc6f5d9e8c8c24e995622673a32f12caba8d819c1bc8141a9d59288064736f6c634300081a0033",I0={},h0={},P={_format:l0,contractName:m0,sourceName:T0,abi:v0,bytecode:w0,deployedBytecode:M0,linkReferences:I0,deployedLinkReferences:h0},A0="hh-sol-artifact-1",g0="ERC721MintAction",R0="contracts/actions/ERC721MintAction.sol",O0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],x0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516116026100c85f395f61054001526116025ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",C0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c471461033e578063ea3d508a1461037a578063f04e283e146103a4578063f2fde38b146103c0578063fee81cf4146103dc57610113565b8063715018a61461027a5780638da5cb5b146102845780639a8a0592146102ae578063bec95277146102d8578063d4b839921461031457610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e73565b610418565b60405161014a9190610eb8565b60405180910390f35b61016d60048036038101906101689190610f32565b610491565b60405161017b929190610fed565b60405180910390f35b61018c6104c6565b005b348015610199575f80fd5b506101a2610517565b6040516101af919061102a565b60405180910390f35b3480156101c3575f80fd5b506101cc61053e565b6040516101d991906110bd565b60405180910390f35b3480156101ed575f80fd5b506101f6610562565b60405161020391906110ee565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f32565b610568565b005b61023c6105f5565b005b348015610249575f80fd5b50610264600480360381019061025f919061116c565b61062e565b6040516102719190610eb8565b60405180910390f35b61028261078b565b005b34801561028f575f80fd5b5061029861079e565b6040516102a591906111ff565b60405180910390f35b3480156102b9575f80fd5b506102c26107c6565b6040516102cf91906110ee565b60405180910390f35b3480156102e3575f80fd5b506102fe60048036038101906102f99190611218565b6107cb565b60405161030b9190610eb8565b60405180910390f35b34801561031f575f80fd5b506103286107e8565b60405161033591906111ff565b60405180910390f35b348015610349575f80fd5b50610364600480360381019061035f9190610f32565b61080d565b6040516103719190611243565b60405180910390f35b348015610385575f80fd5b5061038e610821565b60405161039b919061102a565b60405180910390f35b6103be60048036038101906103b99190611263565b610834565b005b6103da60048036038101906103d59190611263565b610872565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190611263565b61089b565b60405161040f91906110ee565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061048a5750610489826108b4565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104cf61092d565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f610571610937565b905080546003825580156105a35760018160011c14303b1061059a5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105bb83838101906105b6919061137f565b610960565b80156105f0576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106409190611495565b915091505f8161064f90611527565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106c491906110ee565b602060405180830381865afa1580156106df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070391906115a1565b73ffffffffffffffffffffffffffffffffffffffff16148015610741575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561077b57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610782565b5f93505050505b95945050505050565b6107936109ee565b61079c5f610a25565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606108198383610aeb565b905092915050565b600160149054906101000a900460e01b81565b61083c6109ee565b63389a75e1600c52805f526020600c20805442111561086257636f5e88185f526004601cfd5b5f81555061086f81610a25565b50565b61087a6109ee565b8060601b61088f57637448fbae5f526004601cfd5b61089881610a25565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610926575061092582610b0f565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610968610b88565b61097133610bac565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a23576382b429005f526004601cfd5b565b610a2d610c82565b15610a92577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ae8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610b07600160149054906101000a900460e01b8484610c86565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b815750610b8082610cb2565b5b9050919050565b5f610b91610937565b90508054600116610ba95763d7e6bcf85f526004601cfd5b50565b610bb4610c82565b15610c2c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610bee57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c7f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d245750610d2382610d2b565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d9d5750610d9c82610da4565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e5281610e1e565b8114610e5c575f80fd5b50565b5f81359050610e6d81610e49565b92915050565b5f60208284031215610e8857610e87610e16565b5b5f610e9584828501610e5f565b91505092915050565b5f8115159050919050565b610eb281610e9e565b82525050565b5f602082019050610ecb5f830184610ea9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ef257610ef1610ed1565b5b8235905067ffffffffffffffff811115610f0f57610f0e610ed5565b5b602083019150836001820283011115610f2b57610f2a610ed9565b5b9250929050565b5f8060208385031215610f4857610f47610e16565b5b5f83013567ffffffffffffffff811115610f6557610f64610e1a565b5b610f7185828601610edd565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fbf82610f7d565b610fc98185610f87565b9350610fd9818560208601610f97565b610fe281610fa5565b840191505092915050565b5f6040820190506110005f830185610ea9565b81810360208301526110128184610fb5565b90509392505050565b61102481610e1e565b82525050565b5f60208201905061103d5f83018461101b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61108561108061107b84611043565b611062565b611043565b9050919050565b5f6110968261106b565b9050919050565b5f6110a78261108c565b9050919050565b6110b78161109d565b82525050565b5f6020820190506110d05f8301846110ae565b92915050565b5f819050919050565b6110e8816110d6565b82525050565b5f6020820190506111015f8301846110df565b92915050565b611110816110d6565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f61113b82611043565b9050919050565b61114b81611131565b8114611155575f80fd5b50565b5f8135905061116681611142565b92915050565b5f805f805f6080868803121561118557611184610e16565b5b5f6111928882890161111d565b95505060206111a38882890161111d565b94505060406111b488828901611158565b935050606086013567ffffffffffffffff8111156111d5576111d4610e1a565b5b6111e188828901610edd565b92509250509295509295909350565b6111f981611131565b82525050565b5f6020820190506112125f8301846111f0565b92915050565b5f6020828403121561122d5761122c610e16565b5b5f61123a8482850161111d565b91505092915050565b5f6020820190508181035f83015261125b8184610fb5565b905092915050565b5f6020828403121561127857611277610e16565b5b5f61128584828501611158565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112c882610fa5565b810181811067ffffffffffffffff821117156112e7576112e6611292565b5b80604052505050565b5f6112f9610e0d565b905061130582826112bf565b919050565b5f6080828403121561131f5761131e61128e565b5b61132960806112f0565b90505f6113388482850161111d565b5f83015250602061134b84828501611158565b602083015250604061135f84828501610e5f565b60408301525060606113738482850161111d565b60608301525092915050565b5f6080828403121561139457611393610e16565b5b5f6113a18482850161130a565b91505092915050565b5f6113b482611043565b9050919050565b6113c4816113aa565b81146113ce575f80fd5b50565b5f813590506113df816113bb565b92915050565b5f80fd5b5f67ffffffffffffffff82111561140357611402611292565b5b61140c82610fa5565b9050602081019050919050565b828183375f83830152505050565b5f611439611434846113e9565b6112f0565b905082815260208101848484011115611455576114546113e5565b5b611460848285611419565b509392505050565b5f82601f83011261147c5761147b610ed1565b5b813561148c848260208601611427565b91505092915050565b5f80604083850312156114ab576114aa610e16565b5b5f6114b8858286016113d1565b925050602083013567ffffffffffffffff8111156114d9576114d8610e1a565b5b6114e585828601611468565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61151282516114fe565b80915050919050565b5f82821b905092915050565b5f61153182610f7d565b8261153b846114ef565b905061154681611507565b92506020821015611586576115817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261151b565b831692505b5050919050565b5f8151905061159b81611142565b92915050565b5f602082840312156115b6576115b5610e16565b5b5f6115c38482850161158d565b9150509291505056fea2646970667358221220b9d5891d8e717e919853496af9e588a483cdae8d727ba1abd27c8b358bbe4d3a64736f6c634300081a0033",_0={},z0={},G={_format:A0,contractName:g0,sourceName:R0,abi:O0,bytecode:x0,deployedBytecode:C0,linkReferences:_0,deployedLinkReferences:z0},N0="hh-sol-artifact-1",E0="EventAction",$0="contracts/actions/EventAction.sol",k0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],L0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516123db6100c85f395f61034a01526123db5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220274ffd153b96474be98b2c3fea8b3e6acfc22a607176ec7b8c41f6ac37ab4d8764736f6c634300081a0033",H0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220274ffd153b96474be98b2c3fea8b3e6acfc22a607176ec7b8c41f6ac37ab4d8764736f6c634300081a0033",D0={},B0={},Z={_format:N0,contractName:E0,sourceName:$0,abi:k0,bytecode:L0,deployedBytecode:H0,linkReferences:D0,deployedLinkReferences:B0},S0="hh-sol-artifact-1",V0="SimpleAllowList",q0="contracts/allowlists/SimpleAllowList.sol",F0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],U0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",P0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",G0={},Z0={},W={_format:S0,contractName:V0,sourceName:q0,abi:F0,bytecode:U0,deployedBytecode:P0,linkReferences:G0,deployedLinkReferences:Z0},W0="hh-sol-artifact-1",j0="SimpleDenyList",K0="contracts/allowlists/SimpleDenyList.sol",Q0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Y0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",J0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",X0={},ff={},j={_format:W0,contractName:j0,sourceName:K0,abi:Q0,bytecode:Y0,deployedBytecode:J0,linkReferences:X0,deployedLinkReferences:ff},bf="hh-sol-artifact-1",ef="ManagedBudget",af="contracts/budgets/ManagedBudget.sol",df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],tf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",nf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",cf={},sf={},K={_format:bf,contractName:ef,sourceName:af,abi:df,bytecode:tf,deployedBytecode:nf,linkReferences:cf,deployedLinkReferences:sf},pf="hh-sol-artifact-1",yf="ManagedBudgetWithFees",rf="contracts/budgets/ManagedBudgetWithFees.sol",uf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],of="0x6080604052348015600e575f80fd5b50601b602b60201b60201c565b6027602b60201b60201c565b60bc565b5f6038609360201b60201c565b90508054600181161560515763f92ee8a95f526004601cfd5b8160c01c808260011c14608e578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b614ba6806100c95f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",lf="0x60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220a3dcdaf77dd9fc6726bca02326b0970d69c7bb955761fe846b750d3a743f622764736f6c634300081a0033",mf={},Tf={},Q={_format:pf,contractName:yf,sourceName:rf,abi:uf,bytecode:of,deployedBytecode:lf,linkReferences:mf,deployedLinkReferences:Tf},vf="hh-sol-artifact-1",wf="VestingBudget",Mf="contracts/budgets/VestingBudget.sol",If=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],hf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",Af="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",gf={},Rf={},Y={_format:vf,contractName:wf,sourceName:Mf,abi:If,bytecode:hf,deployedBytecode:Af,linkReferences:gf,deployedLinkReferences:Rf},Of="hh-sol-artifact-1",xf="AllowListIncentive",Cf="contracts/incentives/AllowListIncentive.sol",_f=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61180b806100bd5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Nf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Ef={},$f={},J={_format:Of,contractName:xf,sourceName:Cf,abi:_f,bytecode:zf,deployedBytecode:Nf,linkReferences:Ef,deployedLinkReferences:$f},kf="hh-sol-artifact-1",Lf="CGDAIncentive",Hf="contracts/incentives/CGDAIncentive.sol",Df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Bf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612848806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Sf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Vf={},qf={},X={_format:kf,contractName:Lf,sourceName:Hf,abi:Df,bytecode:Bf,deployedBytecode:Sf,linkReferences:Vf,deployedLinkReferences:qf},Ff="hh-sol-artifact-1",Uf="ERC20Incentive",Pf="contracts/incentives/ERC20Incentive.sol",Gf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d51806100bd5f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",Wf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",jf={},Kf={},f0={_format:Ff,contractName:Uf,sourceName:Pf,abi:Gf,bytecode:Zf,deployedBytecode:Wf,linkReferences:jf,deployedLinkReferences:Kf},Qf="hh-sol-artifact-1",Yf="ERC20VariableCriteriaIncentive",Jf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Xf=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],f5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d42806100bd5f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",b5="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",e5={},a5={},b0={_format:Qf,contractName:Yf,sourceName:Jf,abi:Xf,bytecode:f5,deployedBytecode:b5,linkReferences:e5,deployedLinkReferences:a5},d5="hh-sol-artifact-1",t5="ERC20VariableIncentive",n5="contracts/incentives/ERC20VariableIncentive.sol",c5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],i5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612707806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",s5="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",p5={},y5={},e0={_format:d5,contractName:t5,sourceName:n5,abi:c5,bytecode:i5,deployedBytecode:s5,linkReferences:p5,deployedLinkReferences:y5},r5="hh-sol-artifact-1",u5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",l5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],m5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61332c806100bd5f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",T5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",v5={},w5={},a0={_format:r5,contractName:u5,sourceName:o5,abi:l5,bytecode:m5,deployedBytecode:T5,linkReferences:v5,deployedLinkReferences:w5},M5="hh-sol-artifact-1",I5="PointsIncentive",h5="contracts/incentives/PointsIncentive.sol",A5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],g5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611c21806100bd5f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",R5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",O5={},x5={},d0={_format:M5,contractName:I5,sourceName:h5,abi:A5,bytecode:g5,deployedBytecode:R5,linkReferences:O5,deployedLinkReferences:x5},C5="hh-sol-artifact-1",_5="LimitedSignerValidator",z5="contracts/validators/LimitedSignerValidator.sol",N5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],E5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161236361028a5f395f610fe601525f61128d01525f61126a01525f6112fc01525f61132001526123635ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d4fa7e3fb4f7c86b44d4f67ce9d9abff3e164c74acadbf114f3c66eb52afdbd864736f6c634300081a0033",$5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f1461035d578063d3de6e7514610387578063f04e283e146103c3578063f2fde38b146103df578063fee81cf4146103fb57610113565b8063715018a614610295578063736c0d5b1461029f57806384b0196e146102db5780638da5cb5b1461030b578063a1d2756f1461033557610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611511565b610437565b60405161014a9190611556565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115fc565b6104b0565b6040516101869190611664565b60405180910390f35b6101976104e5565b005b3480156101a4575f80fd5b506101ad610536565b6040516101ba919061168c565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116cf565b61055d565b6040516101f69190611709565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117d8565b610572565b005b348015610232575f80fd5b5061024d600480360381019061024891906118ab565b61067b565b005b6102576107fd565b005b348015610264575f80fd5b5061027f600480360381019061027a91906118f6565b610836565b60405161028c9190611556565b60405180910390f35b61029d61089b565b005b3480156102aa575f80fd5b506102c560048036038101906102c0919061197a565b6108ae565b6040516102d29190611556565b60405180910390f35b3480156102e6575f80fd5b506102ef6108ca565b6040516103029796959493929190611b15565b60405180910390f35b348015610316575f80fd5b5061031f610915565b60405161032c9190611b97565b60405180910390f35b348015610340575f80fd5b5061035b6004803603810190610356919061197a565b61093d565b005b348015610368575f80fd5b50610371610988565b60405161037e9190611709565b60405180910390f35b348015610392575f80fd5b506103ad60048036038101906103a89190611d0e565b61098e565b6040516103ba9190611664565b60405180910390f35b6103dd60048036038101906103d8919061197a565b6109f7565b005b6103f960048036038101906103f4919061197a565b610a35565b005b348015610406575f80fd5b50610421600480360381019061041c919061197a565b610a5e565b60405161042e9190611709565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104a957506104a882610a77565b5b9050919050565b5f8383836040516020016104c693929190611df3565b6040516020818303038152906040528051906020012090509392505050565b5f6104ee610af0565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61057a610afa565b8181905084849050146105b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610674578282828181106105d9576105d8611e2f565b5b90506020020160208101906105ee9190611e86565b5f8087878581811061060357610602611e2f565b5b9050602002016020810190610618919061197a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105bb565b5050505050565b5f610684610b31565b905080546003825580156106b65760018160011c14303b106106ad5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106c99190611fac565b9250925092506106f2835f815181106106e5576106e4611e2f565b5b6020026020010151610b5a565b806002819055505f5b835181101561077f5760015f8086848151811061071b5761071a611e2f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106fb565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107f8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610842868686610c30565b61088357836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161087a9190611b97565b60405180910390fd5b6108908686868686610c97565b905095945050505050565b6108a3610afa565b6108ac5f610e8a565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108fe610f50565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610945610afa565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109ed7ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109d2959493929190612027565b60405160208183030381529060405280519060200120610fc7565b9050949350505050565b6109ff610afa565b63389a75e1600c52805f526020600c208054421115610a2557636f5e88185f526004601cfd5b5f815550610a3281610e8a565b50565b610a3d610afa565b8060601b610a5257637448fbae5f526004601cfd5b610a5b81610e8a565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ae95750610ae882611043565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b2f576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b626110bc565b15610bda577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c2d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c3d8585856104b0565b90505f6001805f8481526020019081526020015f2054610c5d91906120a5565b9050600254811115610c73575f92505050610c90565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d2e9190612165565b90505f815f0151806020019051810190610d4891906122bf565b90505f610d5f89836040015189866020015161098e565b905087826040015160ff1611610db2578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610da9929190612306565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e34576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4a818960036110c09092919063ffffffff16565b610e7c818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111259092919063ffffffff16565b935050505095945050505050565b610e926110bc565b15610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fd0611228565b15610fe457610fdd611230565b9050611020565b7f0000000000000000000000000000000000000000000000000000000000000000905061100f6112f8565b1561101f5761101c611230565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110b557506110b482611350565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110eb57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561111857835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561122157604051835f5260208301516040526040835103611192576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118f57600193505f60605282604052505050611221565b50505b60418351036111d85760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111d657600192505f606052816040525050611221565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061123a611228565b15611268575f80611249610f50565b91509150818051906020012093508080519060200120925050506112af565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113c257506113c1826113c9565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061143b575061143a82611442565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114f0816114bc565b81146114fa575f80fd5b50565b5f8135905061150b816114e7565b92915050565b5f60208284031215611526576115256114b4565b5b5f611533848285016114fd565b91505092915050565b5f8115159050919050565b6115508161153c565b82525050565b5f6020820190506115695f830184611547565b92915050565b5f819050919050565b6115818161156f565b811461158b575f80fd5b50565b5f8135905061159c81611578565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115cb826115a2565b9050919050565b6115db816115c1565b81146115e5575f80fd5b50565b5f813590506115f6816115d2565b92915050565b5f805f60608486031215611613576116126114b4565b5b5f6116208682870161158e565b93505060206116318682870161158e565b9250506040611642868287016115e8565b9150509250925092565b5f819050919050565b61165e8161164c565b82525050565b5f6020820190506116775f830184611655565b92915050565b611686816114bc565b82525050565b5f60208201905061169f5f83018461167d565b92915050565b6116ae8161164c565b81146116b8575f80fd5b50565b5f813590506116c9816116a5565b92915050565b5f602082840312156116e4576116e36114b4565b5b5f6116f1848285016116bb565b91505092915050565b6117038161156f565b82525050565b5f60208201905061171c5f8301846116fa565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261174357611742611722565b5b8235905067ffffffffffffffff8111156117605761175f611726565b5b60208301915083602082028301111561177c5761177b61172a565b5b9250929050565b5f8083601f84011261179857611797611722565b5b8235905067ffffffffffffffff8111156117b5576117b4611726565b5b6020830191508360208202830111156117d1576117d061172a565b5b9250929050565b5f805f80604085870312156117f0576117ef6114b4565b5b5f85013567ffffffffffffffff81111561180d5761180c6114b8565b5b6118198782880161172e565b9450945050602085013567ffffffffffffffff81111561183c5761183b6114b8565b5b61184887828801611783565b925092505092959194509250565b5f8083601f84011261186b5761186a611722565b5b8235905067ffffffffffffffff81111561188857611887611726565b5b6020830191508360018202830111156118a4576118a361172a565b5b9250929050565b5f80602083850312156118c1576118c06114b4565b5b5f83013567ffffffffffffffff8111156118de576118dd6114b8565b5b6118ea85828601611856565b92509250509250929050565b5f805f805f6080868803121561190f5761190e6114b4565b5b5f61191c8882890161158e565b955050602061192d8882890161158e565b945050604061193e888289016115e8565b935050606086013567ffffffffffffffff81111561195f5761195e6114b8565b5b61196b88828901611856565b92509250509295509295909350565b5f6020828403121561198f5761198e6114b4565b5b5f61199c848285016115e8565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119d9816119a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a21826119df565b611a2b81856119e9565b9350611a3b8185602086016119f9565b611a4481611a07565b840191505092915050565b611a58816115c1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a908161156f565b82525050565b5f611aa18383611a87565b60208301905092915050565b5f602082019050919050565b5f611ac382611a5e565b611acd8185611a68565b9350611ad883611a78565b805f5b83811015611b08578151611aef8882611a96565b9750611afa83611aad565b925050600181019050611adb565b5085935050505092915050565b5f60e082019050611b285f83018a6119d0565b8181036020830152611b3a8189611a17565b90508181036040830152611b4e8188611a17565b9050611b5d60608301876116fa565b611b6a6080830186611a4f565b611b7760a0830185611655565b81810360c0830152611b898184611ab9565b905098975050505050505050565b5f602082019050611baa5f830184611a4f565b92915050565b5f60ff82169050919050565b611bc581611bb0565b8114611bcf575f80fd5b50565b5f81359050611be081611bbc565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c2082611a07565b810181811067ffffffffffffffff82111715611c3f57611c3e611bea565b5b80604052505050565b5f611c516114ab565b9050611c5d8282611c17565b919050565b5f67ffffffffffffffff821115611c7c57611c7b611bea565b5b611c8582611a07565b9050602081019050919050565b828183375f83830152505050565b5f611cb2611cad84611c62565b611c48565b905082815260208101848484011115611cce57611ccd611be6565b5b611cd9848285611c92565b509392505050565b5f82601f830112611cf557611cf4611722565b5b8135611d05848260208601611ca0565b91505092915050565b5f805f8060808587031215611d2657611d256114b4565b5b5f611d338782880161158e565b9450506020611d4487828801611bd2565b9350506040611d55878288016115e8565b925050606085013567ffffffffffffffff811115611d7657611d756114b8565b5b611d8287828801611ce1565b91505092959194509250565b5f819050919050565b611da8611da38261156f565b611d8e565b82525050565b5f8160601b9050919050565b5f611dc482611dae565b9050919050565b5f611dd582611dba565b9050919050565b611ded611de8826115c1565b611dcb565b82525050565b5f611dfe8286611d97565b602082019150611e0e8285611d97565b602082019150611e1e8284611ddc565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e658161153c565b8114611e6f575f80fd5b50565b5f81359050611e8081611e5c565b92915050565b5f60208284031215611e9b57611e9a6114b4565b5b5f611ea884828501611e72565b91505092915050565b5f67ffffffffffffffff821115611ecb57611eca611bea565b5b602082029050602081019050919050565b5f611eee611ee984611eb1565b611c48565b90508083825260208201905060208402830185811115611f1157611f1061172a565b5b835b81811015611f3a5780611f2688826115e8565b845260208401935050602081019050611f13565b5050509392505050565b5f82601f830112611f5857611f57611722565b5b8135611f68848260208601611edc565b91505092915050565b5f611f7b826115a2565b9050919050565b611f8b81611f71565b8114611f95575f80fd5b50565b5f81359050611fa681611f82565b92915050565b5f805f60608486031215611fc357611fc26114b4565b5b5f84013567ffffffffffffffff811115611fe057611fdf6114b8565b5b611fec86828701611f44565b9350506020611ffd86828701611f98565b925050604061200e8682870161158e565b9150509250925092565b61202181611bb0565b82525050565b5f60a08201905061203a5f830188611655565b61204760208301876116fa565b6120546040830186612018565b6120616060830185611a4f565b61206e6080830184611655565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120af8261156f565b91506120ba8361156f565b92508282019050808211156120d2576120d1612078565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120f5576120f46120d8565b5b6120ff6040611c48565b90505f82013567ffffffffffffffff81111561211e5761211d6120dc565b5b61212a84828501611ce1565b5f83015250602082013567ffffffffffffffff81111561214d5761214c6120dc565b5b61215984828501611ce1565b60208301525092915050565b5f6020828403121561217a576121796114b4565b5b5f82013567ffffffffffffffff811115612197576121966114b8565b5b6121a3848285016120e0565b91505092915050565b5f815190506121ba816115d2565b92915050565b5f6121d26121cd84611c62565b611c48565b9050828152602081018484840111156121ee576121ed611be6565b5b6121f98482856119f9565b509392505050565b5f82601f83011261221557612214611722565b5b81516122258482602086016121c0565b91505092915050565b5f8151905061223c81611bbc565b92915050565b5f60608284031215612257576122566120d8565b5b6122616060611c48565b90505f612270848285016121ac565b5f83015250602082015167ffffffffffffffff811115612293576122926120dc565b5b61229f84828501612201565b60208301525060406122b38482850161222e565b60408301525092915050565b5f602082840312156122d4576122d36114b4565b5b5f82015167ffffffffffffffff8111156122f1576122f06114b8565b5b6122fd84828501612242565b91505092915050565b5f6040820190506123195f830185612018565b61232660208301846116fa565b939250505056fea2646970667358221220d4fa7e3fb4f7c86b44d4f67ce9d9abff3e164c74acadbf114f3c66eb52afdbd864736f6c634300081a0033",k5={},L5={},t0={_format:C5,contractName:_5,sourceName:z5,abi:N5,bytecode:E5,deployedBytecode:$5,linkReferences:k5,deployedLinkReferences:L5},H5="hh-sol-artifact-1",D5="SignerValidator",B5="contracts/validators/SignerValidator.sol",S5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}],V5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611f0661028a5f395f610f9b01525f6110da01525f6110b701525f61114901525f61116d0152611f065ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c6004803603810190610117919061126c565b610374565b60405161012991906112b1565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112d9565b60405180910390f35b348015610171575f80fd5b5061018c600480360381019061018791906113a8565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af919061147b565b61056e565b005b6101be61071c565b005b3480156101cb575f80fd5b506101e660048036038101906101e19190611553565b610755565b6040516101f391906112b1565b60405180910390f35b610204610948565b005b348015610211575f80fd5b5061022c600480360381019061022791906115d7565b61095b565b60405161023991906112b1565b60405180910390f35b34801561024d575f80fd5b50610256610977565b6040516102699796959493929190611799565b60405180910390f35b34801561027d575f80fd5b506102866109c2565b604051610293919061181b565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115d7565b6109ea565b005b3480156102cf575f80fd5b506102ea60048036038101906102e59190611992565b610a35565b6040516102f79190611a12565b60405180910390f35b61031a600480360381019061031591906115d7565b610a9e565b005b610336600480360381019061033191906115d7565b610adc565b005b348015610343575f80fd5b5061035e600480360381019061035991906115d7565b610b05565b60405161036b9190611a2b565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610b1e565b5b9050919050565b5f6103f6610b97565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610ba1565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a44565b5b90506020020160208101906104e19190611a9b565b5f808787858181106104f6576104f5611a44565b5b905060200201602081019061050b91906115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610bd8565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611bc1565b915091506105e2825f815181106105d5576105d4611a44565b5b6020026020010151610c01565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106d8919061181b565b60405180910390a150508015610717576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107ec9190611ca8565b90505f815f01518060200190518101906108069190611e02565b90505f61081d898360400151898660200151610a35565b905087826040015160ff1611610870578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610867929190611e58565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108f2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090881896001610cd79092919063ffffffff16565b61093a818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d3c9092919063ffffffff16565b935050505095945050505050565b610950610ba1565b6109595f610e3f565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506109ab610f05565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109f2610ba1565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a947ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a79959493929190611e7f565b60405160208183030381529060405280519060200120610f7c565b9050949350505050565b610aa6610ba1565b63389a75e1600c52805f526020600c208054421115610acc57636f5e88185f526004601cfd5b5f815550610ad981610e3f565b50565b610ae4610ba1565b8060601b610af957637448fbae5f526004601cfd5b610b0281610e3f565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b905750610b8f82610ff8565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bd6576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610c09611071565b15610c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c4357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cd4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610d0257815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2f57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e3857604051835f5260208301516040526040835103610da9576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610da657600193505f60605282604052505050610e38565b50505b6041835103610def5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610ded57600192505f606052816040525050610e38565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e47611071565b15610eac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f02565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f85611075565b15610f9957610f9261107d565b9050610fd5565b7f00000000000000000000000000000000000000000000000000000000000000009050610fc4611145565b15610fd457610fd161107d565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061106a57506110698261119d565b5b9050919050565b5f90565b5f6001905090565b5f80611087611075565b156110b5575f80611096610f05565b91509150818051906020012093508080519060200120925050506110fc565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61124b81611217565b8114611255575f80fd5b50565b5f8135905061126681611242565b92915050565b5f602082840312156112815761128061120f565b5b5f61128e84828501611258565b91505092915050565b5f8115159050919050565b6112ab81611297565b82525050565b5f6020820190506112c45f8301846112a2565b92915050565b6112d381611217565b82525050565b5f6020820190506112ec5f8301846112ca565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611313576113126112f2565b5b8235905067ffffffffffffffff8111156113305761132f6112f6565b5b60208301915083602082028301111561134c5761134b6112fa565b5b9250929050565b5f8083601f840112611368576113676112f2565b5b8235905067ffffffffffffffff811115611385576113846112f6565b5b6020830191508360208202830111156113a1576113a06112fa565b5b9250929050565b5f805f80604085870312156113c0576113bf61120f565b5b5f85013567ffffffffffffffff8111156113dd576113dc611213565b5b6113e9878288016112fe565b9450945050602085013567ffffffffffffffff81111561140c5761140b611213565b5b61141887828801611353565b925092505092959194509250565b5f8083601f84011261143b5761143a6112f2565b5b8235905067ffffffffffffffff811115611458576114576112f6565b5b602083019150836001820283011115611474576114736112fa565b5b9250929050565b5f80602083850312156114915761149061120f565b5b5f83013567ffffffffffffffff8111156114ae576114ad611213565b5b6114ba85828601611426565b92509250509250929050565b5f819050919050565b6114d8816114c6565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611522826114f9565b9050919050565b61153281611518565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f805f805f6080868803121561156c5761156b61120f565b5b5f611579888289016114e5565b955050602061158a888289016114e5565b945050604061159b8882890161153f565b935050606086013567ffffffffffffffff8111156115bc576115bb611213565b5b6115c888828901611426565b92509250509295509295909350565b5f602082840312156115ec576115eb61120f565b5b5f6115f98482850161153f565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61163681611602565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167e8261163c565b6116888185611646565b9350611698818560208601611656565b6116a181611664565b840191505092915050565b6116b5816114c6565b82525050565b6116c481611518565b82525050565b5f819050919050565b6116dc816116ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611714816114c6565b82525050565b5f611725838361170b565b60208301905092915050565b5f602082019050919050565b5f611747826116e2565b61175181856116ec565b935061175c836116fc565b805f5b8381101561178c578151611773888261171a565b975061177e83611731565b92505060018101905061175f565b5085935050505092915050565b5f60e0820190506117ac5f83018a61162d565b81810360208301526117be8189611674565b905081810360408301526117d28188611674565b90506117e160608301876116ac565b6117ee60808301866116bb565b6117fb60a08301856116d3565b81810360c083015261180d818461173d565b905098975050505050505050565b5f60208201905061182e5f8301846116bb565b92915050565b5f60ff82169050919050565b61184981611834565b8114611853575f80fd5b50565b5f8135905061186481611840565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118a482611664565b810181811067ffffffffffffffff821117156118c3576118c261186e565b5b80604052505050565b5f6118d5611206565b90506118e1828261189b565b919050565b5f67ffffffffffffffff821115611900576118ff61186e565b5b61190982611664565b9050602081019050919050565b828183375f83830152505050565b5f611936611931846118e6565b6118cc565b9050828152602081018484840111156119525761195161186a565b5b61195d848285611916565b509392505050565b5f82601f830112611979576119786112f2565b5b8135611989848260208601611924565b91505092915050565b5f805f80608085870312156119aa576119a961120f565b5b5f6119b7878288016114e5565b94505060206119c887828801611856565b93505060406119d98782880161153f565b925050606085013567ffffffffffffffff8111156119fa576119f9611213565b5b611a0687828801611965565b91505092959194509250565b5f602082019050611a255f8301846116d3565b92915050565b5f602082019050611a3e5f8301846116ac565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a7a81611297565b8114611a84575f80fd5b50565b5f81359050611a9581611a71565b92915050565b5f60208284031215611ab057611aaf61120f565b5b5f611abd84828501611a87565b91505092915050565b5f67ffffffffffffffff821115611ae057611adf61186e565b5b602082029050602081019050919050565b5f611b03611afe84611ac6565b6118cc565b90508083825260208201905060208402830185811115611b2657611b256112fa565b5b835b81811015611b4f5780611b3b888261153f565b845260208401935050602081019050611b28565b5050509392505050565b5f82601f830112611b6d57611b6c6112f2565b5b8135611b7d848260208601611af1565b91505092915050565b5f611b90826114f9565b9050919050565b611ba081611b86565b8114611baa575f80fd5b50565b5f81359050611bbb81611b97565b92915050565b5f8060408385031215611bd757611bd661120f565b5b5f83013567ffffffffffffffff811115611bf457611bf3611213565b5b611c0085828601611b59565b9250506020611c1185828601611bad565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c3857611c37611c1b565b5b611c4260406118cc565b90505f82013567ffffffffffffffff811115611c6157611c60611c1f565b5b611c6d84828501611965565b5f83015250602082013567ffffffffffffffff811115611c9057611c8f611c1f565b5b611c9c84828501611965565b60208301525092915050565b5f60208284031215611cbd57611cbc61120f565b5b5f82013567ffffffffffffffff811115611cda57611cd9611213565b5b611ce684828501611c23565b91505092915050565b5f81519050611cfd81611529565b92915050565b5f611d15611d10846118e6565b6118cc565b905082815260208101848484011115611d3157611d3061186a565b5b611d3c848285611656565b509392505050565b5f82601f830112611d5857611d576112f2565b5b8151611d68848260208601611d03565b91505092915050565b5f81519050611d7f81611840565b92915050565b5f60608284031215611d9a57611d99611c1b565b5b611da460606118cc565b90505f611db384828501611cef565b5f83015250602082015167ffffffffffffffff811115611dd657611dd5611c1f565b5b611de284828501611d44565b6020830152506040611df684828501611d71565b60408301525092915050565b5f60208284031215611e1757611e1661120f565b5b5f82015167ffffffffffffffff811115611e3457611e33611213565b5b611e4084828501611d85565b91505092915050565b611e5281611834565b82525050565b5f604082019050611e6b5f830185611e49565b611e7860208301846116ac565b9392505050565b5f60a082019050611e925f8301886116d3565b611e9f60208301876116ac565b611eac6040830186611e49565b611eb960608301856116bb565b611ec660808301846116d3565b969550505050505056fea2646970667358221220c878bffa469c59cf5f5f9a4334b893b031a135760d3134b74f109c8a522594c264736f6c634300081a0033",q5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102c4578063f04e283e14610300578063f2fde38b1461031c578063fee81cf414610338576100f2565b8063736c0d5b1461020657806384b0196e146102425780638da5cb5b14610272578063a1d2756f1461029c576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101fc576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c6004803603810190610117919061126c565b610374565b60405161012991906112b1565b60405180910390f35b61013a6103ed565b005b348015610147575f80fd5b5061015061043e565b60405161015d91906112d9565b60405180910390f35b348015610171575f80fd5b5061018c600480360381019061018791906113a8565b610465565b005b348015610199575f80fd5b506101b460048036038101906101af919061147b565b61056e565b005b6101be61071c565b005b3480156101cb575f80fd5b506101e660048036038101906101e19190611553565b610755565b6040516101f391906112b1565b60405180910390f35b610204610948565b005b348015610211575f80fd5b5061022c600480360381019061022791906115d7565b61095b565b60405161023991906112b1565b60405180910390f35b34801561024d575f80fd5b50610256610977565b6040516102699796959493929190611799565b60405180910390f35b34801561027d575f80fd5b506102866109c2565b604051610293919061181b565b60405180910390f35b3480156102a7575f80fd5b506102c260048036038101906102bd91906115d7565b6109ea565b005b3480156102cf575f80fd5b506102ea60048036038101906102e59190611992565b610a35565b6040516102f79190611a12565b60405180910390f35b61031a600480360381019061031591906115d7565b610a9e565b005b610336600480360381019061033191906115d7565b610adc565b005b348015610343575f80fd5b5061035e600480360381019061035991906115d7565b610b05565b60405161036b9190611a2b565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103e657506103e582610b1e565b5b9050919050565b5f6103f6610b97565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b61046d610ba1565b8181905084849050146104ac576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610567578282828181106104cc576104cb611a44565b5b90506020020160208101906104e19190611a9b565b5f808787858181106104f6576104f5611a44565b5b905060200201602081019061050b91906115d7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104ae565b5050505050565b5f610577610bd8565b905080546003825580156105a95760018160011c14303b106105a05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105bb9190611bc1565b915091506105e2825f815181106105d5576105d4611a44565b5b6020026020010151610c01565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b82518110156106a85760015f8085848151811061064457610643611a44565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610624565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106d8919061181b565b60405180910390a150508015610717576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107dc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107ec9190611ca8565b90505f815f01518060200190518101906108069190611e02565b90505f61081d898360400151898660200151610a35565b905087826040015160ff1611610870578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610867929190611e58565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108f2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090881896001610cd79092919063ffffffff16565b61093a818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d3c9092919063ffffffff16565b935050505095945050505050565b610950610ba1565b6109595f610e3f565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506109ab610f05565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109f2610ba1565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a947ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a79959493929190611e7f565b60405160208183030381529060405280519060200120610f7c565b9050949350505050565b610aa6610ba1565b63389a75e1600c52805f526020600c208054421115610acc57636f5e88185f526004601cfd5b5f815550610ad981610e3f565b50565b610ae4610ba1565b8060601b610af957637448fbae5f526004601cfd5b610b0281610e3f565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b905750610b8f82610ff8565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bd6576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610c09611071565b15610c81577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c4357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cd4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610d0257815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2f57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e3857604051835f5260208301516040526040835103610da9576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610da657600193505f60605282604052505050610e38565b50505b6041835103610def5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610ded57600192505f606052816040525050610e38565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e47611071565b15610eac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f02565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f85611075565b15610f9957610f9261107d565b9050610fd5565b7f00000000000000000000000000000000000000000000000000000000000000009050610fc4611145565b15610fd457610fd161107d565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061106a57506110698261119d565b5b9050919050565b5f90565b5f6001905090565b5f80611087611075565b156110b5575f80611096610f05565b91509150818051906020012093508080519060200120925050506110fc565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61124b81611217565b8114611255575f80fd5b50565b5f8135905061126681611242565b92915050565b5f602082840312156112815761128061120f565b5b5f61128e84828501611258565b91505092915050565b5f8115159050919050565b6112ab81611297565b82525050565b5f6020820190506112c45f8301846112a2565b92915050565b6112d381611217565b82525050565b5f6020820190506112ec5f8301846112ca565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611313576113126112f2565b5b8235905067ffffffffffffffff8111156113305761132f6112f6565b5b60208301915083602082028301111561134c5761134b6112fa565b5b9250929050565b5f8083601f840112611368576113676112f2565b5b8235905067ffffffffffffffff811115611385576113846112f6565b5b6020830191508360208202830111156113a1576113a06112fa565b5b9250929050565b5f805f80604085870312156113c0576113bf61120f565b5b5f85013567ffffffffffffffff8111156113dd576113dc611213565b5b6113e9878288016112fe565b9450945050602085013567ffffffffffffffff81111561140c5761140b611213565b5b61141887828801611353565b925092505092959194509250565b5f8083601f84011261143b5761143a6112f2565b5b8235905067ffffffffffffffff811115611458576114576112f6565b5b602083019150836001820283011115611474576114736112fa565b5b9250929050565b5f80602083850312156114915761149061120f565b5b5f83013567ffffffffffffffff8111156114ae576114ad611213565b5b6114ba85828601611426565b92509250509250929050565b5f819050919050565b6114d8816114c6565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611522826114f9565b9050919050565b61153281611518565b811461153c575f80fd5b50565b5f8135905061154d81611529565b92915050565b5f805f805f6080868803121561156c5761156b61120f565b5b5f611579888289016114e5565b955050602061158a888289016114e5565b945050604061159b8882890161153f565b935050606086013567ffffffffffffffff8111156115bc576115bb611213565b5b6115c888828901611426565b92509250509295509295909350565b5f602082840312156115ec576115eb61120f565b5b5f6115f98482850161153f565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61163681611602565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167e8261163c565b6116888185611646565b9350611698818560208601611656565b6116a181611664565b840191505092915050565b6116b5816114c6565b82525050565b6116c481611518565b82525050565b5f819050919050565b6116dc816116ca565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611714816114c6565b82525050565b5f611725838361170b565b60208301905092915050565b5f602082019050919050565b5f611747826116e2565b61175181856116ec565b935061175c836116fc565b805f5b8381101561178c578151611773888261171a565b975061177e83611731565b92505060018101905061175f565b5085935050505092915050565b5f60e0820190506117ac5f83018a61162d565b81810360208301526117be8189611674565b905081810360408301526117d28188611674565b90506117e160608301876116ac565b6117ee60808301866116bb565b6117fb60a08301856116d3565b81810360c083015261180d818461173d565b905098975050505050505050565b5f60208201905061182e5f8301846116bb565b92915050565b5f60ff82169050919050565b61184981611834565b8114611853575f80fd5b50565b5f8135905061186481611840565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118a482611664565b810181811067ffffffffffffffff821117156118c3576118c261186e565b5b80604052505050565b5f6118d5611206565b90506118e1828261189b565b919050565b5f67ffffffffffffffff821115611900576118ff61186e565b5b61190982611664565b9050602081019050919050565b828183375f83830152505050565b5f611936611931846118e6565b6118cc565b9050828152602081018484840111156119525761195161186a565b5b61195d848285611916565b509392505050565b5f82601f830112611979576119786112f2565b5b8135611989848260208601611924565b91505092915050565b5f805f80608085870312156119aa576119a961120f565b5b5f6119b7878288016114e5565b94505060206119c887828801611856565b93505060406119d98782880161153f565b925050606085013567ffffffffffffffff8111156119fa576119f9611213565b5b611a0687828801611965565b91505092959194509250565b5f602082019050611a255f8301846116d3565b92915050565b5f602082019050611a3e5f8301846116ac565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a7a81611297565b8114611a84575f80fd5b50565b5f81359050611a9581611a71565b92915050565b5f60208284031215611ab057611aaf61120f565b5b5f611abd84828501611a87565b91505092915050565b5f67ffffffffffffffff821115611ae057611adf61186e565b5b602082029050602081019050919050565b5f611b03611afe84611ac6565b6118cc565b90508083825260208201905060208402830185811115611b2657611b256112fa565b5b835b81811015611b4f5780611b3b888261153f565b845260208401935050602081019050611b28565b5050509392505050565b5f82601f830112611b6d57611b6c6112f2565b5b8135611b7d848260208601611af1565b91505092915050565b5f611b90826114f9565b9050919050565b611ba081611b86565b8114611baa575f80fd5b50565b5f81359050611bbb81611b97565b92915050565b5f8060408385031215611bd757611bd661120f565b5b5f83013567ffffffffffffffff811115611bf457611bf3611213565b5b611c0085828601611b59565b9250506020611c1185828601611bad565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c3857611c37611c1b565b5b611c4260406118cc565b90505f82013567ffffffffffffffff811115611c6157611c60611c1f565b5b611c6d84828501611965565b5f83015250602082013567ffffffffffffffff811115611c9057611c8f611c1f565b5b611c9c84828501611965565b60208301525092915050565b5f60208284031215611cbd57611cbc61120f565b5b5f82013567ffffffffffffffff811115611cda57611cd9611213565b5b611ce684828501611c23565b91505092915050565b5f81519050611cfd81611529565b92915050565b5f611d15611d10846118e6565b6118cc565b905082815260208101848484011115611d3157611d3061186a565b5b611d3c848285611656565b509392505050565b5f82601f830112611d5857611d576112f2565b5b8151611d68848260208601611d03565b91505092915050565b5f81519050611d7f81611840565b92915050565b5f60608284031215611d9a57611d99611c1b565b5b611da460606118cc565b90505f611db384828501611cef565b5f83015250602082015167ffffffffffffffff811115611dd657611dd5611c1f565b5b611de284828501611d44565b6020830152506040611df684828501611d71565b60408301525092915050565b5f60208284031215611e1757611e1661120f565b5b5f82015167ffffffffffffffff811115611e3457611e33611213565b5b611e4084828501611d85565b91505092915050565b611e5281611834565b82525050565b5f604082019050611e6b5f830185611e49565b611e7860208301846116ac565b9392505050565b5f60a082019050611e925f8301886116d3565b611e9f60208301876116ac565b611eac6040830186611e49565b611eb960608301856116bb565b611ec660808301846116d3565b969550505050505056fea2646970667358221220c878bffa469c59cf5f5f9a4334b893b031a135760d3134b74f109c8a522594c264736f6c634300081a0033",F5={},U5={},n0={_format:H5,contractName:D5,sourceName:B5,abi:S5,bytecode:V5,deployedBytecode:q5,linkReferences:F5,deployedLinkReferences:U5};function P5(i,s,a){const n=i[s.name];if(typeof n=="function")return n;const r=i[a];return typeof r=="function"?r:p=>s(i,p)}async function G5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new y.ConnectorUnavailableReconnectingError({connector:e});const[d,x]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:x,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new y.ConnectorNotConnectedError;const n=s.chainId??a.chainId,r=await a.connector.getChainId();if(r!==a.chainId)throw new y.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:r});const p=a.connector;if(p.getClient)return p.getClient({chainId:n});const c=y.parseAccount(s.account??a.accounts[0]);if(c.address=y.getAddress(c.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===c.address.toLowerCase()))throw new y.ConnectorAccountNotFoundError({address:c.address,connector:p});const O=i.chains.find(e=>e.id===n),f=await a.connector.getProvider({chainId:n});return y.createClient({account:c,chain:O,name:"Connector Client",transport:e=>y.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:n,connector:r,...p}=s;let c;return typeof a=="object"&&a.type==="local"?c=i.getClient({chainId:n}):c=await G5(i,{account:a,chainId:n,connector:r}),await P5(c,y.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:n?{id:n}:null})}const Z5=async function(s,a){var u,o,l,m,T,v,w,M,I,h,A,g,R;const n=a.privateKey,r=a.mnemonic,p=a.chain;if(!n&&!r)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!y.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,O]=y.getDeployableOptions({chain:p,privateKey:n,mnemonic:r}),{config:f,account:e}=c,d=O.id,x=await new b.BoostRegistry({address:null,...c}).deploy(),z=class z extends b.BoostRegistry{};z.addresses={[d]:x.assertValidAddress()};let C=z;const _=new C({...c,address:x.assertValidAddress()}),c0=await new b.BoostCore({...c,registryAddress:_.assertValidAddress(),protocolFeeReceiver:e.address,owner:e.address}).deploy(),i0=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),s0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),p0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),y0=await b.getDeployedContractAddress(f,t(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,t(f,{abi:J.abi,bytecode:J.bytecode,account:e})),L=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),r0=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:n0.abi,bytecode:n0.bytecode,account:e})),F=await b.getDeployedContractAddress(f,t(f,{abi:t0.abi,bytecode:t0.bytecode,account:e})),u0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:D},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:N},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:E},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:$},m),ManagedBudgetWithFees:(T=class extends b.ManagedBudgetWithFees{},T.bases={[d]:p0},T),AllowListIncentive:(v=class extends b.AllowListIncentive{},v.bases={[d]:k},v),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(M=class extends b.ERC20Incentive{},M.bases={[d]:H},M),ERC20VariableIncentive:(I=class extends b.ERC20VariableIncentive{},I.bases={[d]:S},I),ERC20VariableCriteriaIncentive:(h=class extends b.ERC20VariableCriteriaIncentive{},h.bases={[d]:V},h),PointsIncentive:(A=class extends b.PointsIncentive{},A.bases={[d]:B},A),SignerValidator:(g=class extends b.SignerValidator{},g.bases={[d]:q},g),LimitedSignerValidator:(R=class extends b.LimitedSignerValidator{},R.bases={[d]:F},R)};for(const[o0,U]of Object.entries(u0))await _.register(U.registryType,o0,U.bases[d]);return{BOOST_CORE_ADDRESS:c0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:_.assertValidAddress(),CONTRACT_ACTION_BASE:i0,EVENT_ACTION_BASE:D,ERC721_MINT_ACTION_BASE:s0,SIMPLE_ALLOWLIST_BASE:N,SIMPLE_DENYLIST_BASE:E,MANAGED_BUDGET_BASE:$,VESTING_BUDGET_BASE:y0,ALLOWLIST_INCENTIVE_BASE:k,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:H,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:V,ERC1155_INCENTIVE_BASE:r0,POINTS_INCENTIVE_BASE:B,SIGNER_VALIDATOR_BASE:q,LIMITED_SIGNER_VALIDATOR_BASE:F}};exports.deploy=Z5;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@boostxyz/sdk"),y=require("../utils-CQC0lDOX.cjs"),l0="hh-sol-artifact-1",m0="ContractAction",T0="contracts/actions/ContractAction.sol",v0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],w0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b608051610cbb6100c85f395f6104030152610cbb5ff3fe608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea2646970667358221220fe6c75be65a23f4793221cf466df29bfea23e7a5257f32b5d09fee8d686b68a564736f6c634300081a0033",M0="0x608060405260043610610090575f3560e01c8063439fab9111610058578063439fab911461017f5780639a8a0592146101a7578063d4b83992146101d1578063d7768c47146101fb578063ea3d508a1461023757610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b5780633fa4f24514610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b591906107d8565b610261565b6040516100c7919061081d565b60405180910390f35b6100ea60048036038101906100e59190610897565b6102da565b6040516100f8929190610952565b60405180910390f35b34801561010c575f80fd5b506101156103da565b604051610122919061098f565b60405180910390f35b348015610136575f80fd5b5061013f610401565b60405161014c9190610a22565b60405180910390f35b348015610160575f80fd5b50610169610425565b6040516101769190610a53565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190610897565b61042b565b005b3480156101b2575f80fd5b506101bb6104b8565b6040516101c89190610a53565b60405180910390f35b3480156101dc575f80fd5b506101e56104bd565b6040516101f29190610a8c565b60405180910390f35b348015610206575f80fd5b50610221600480360381019061021c9190610897565b6104e2565b60405161022e9190610aa5565b60405180910390f35b348015610242575f80fd5b5061024b610506565b604051610258919061098f565b60405180910390f35b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102d357506102d282610519565b5b9050919050565b5f6060465f5414610323575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161031a9190610a53565b60405180910390fd5b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660025461037a600160149054906101000a900460e01b8989610592565b6040516103879190610aff565b5f6040518083038185875af1925050503d805f81146103c1576040519150601f19603f3d011682016040523d82523d5f602084013e6103c6565b606091505b509150915081819350935050509250929050565b5f7f6c3129aa00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f6104346105be565b905080546003825580156104665760018160011c14303b1061045d5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061047e83838101906104799190610c5a565b6105e7565b80156104b3576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606104fe600160149054906101000a900460e01b8484610592565b905092915050565b600160149054906101000a900460e01b81565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061058b575061058a8261066c565b5b9050919050565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6105ef6106e5565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106de57506106dd82610709565b5b9050919050565b5f6106ee6105be565b905080546001166107065763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b781610783565b81146107c1575f80fd5b50565b5f813590506107d2816107ae565b92915050565b5f602082840312156107ed576107ec61077b565b5b5f6107fa848285016107c4565b91505092915050565b5f8115159050919050565b61081781610803565b82525050565b5f6020820190506108305f83018461080e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261085757610856610836565b5b8235905067ffffffffffffffff8111156108745761087361083a565b5b6020830191508360018202830111156108905761088f61083e565b5b9250929050565b5f80602083850312156108ad576108ac61077b565b5b5f83013567ffffffffffffffff8111156108ca576108c961077f565b5b6108d685828601610842565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610924826108e2565b61092e81856108ec565b935061093e8185602086016108fc565b6109478161090a565b840191505092915050565b5f6040820190506109655f83018561080e565b8181036020830152610977818461091a565b90509392505050565b61098981610783565b82525050565b5f6020820190506109a25f830184610980565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6109ea6109e56109e0846109a8565b6109c7565b6109a8565b9050919050565b5f6109fb826109d0565b9050919050565b5f610a0c826109f1565b9050919050565b610a1c81610a02565b82525050565b5f602082019050610a355f830184610a13565b92915050565b5f819050919050565b610a4d81610a3b565b82525050565b5f602082019050610a665f830184610a44565b92915050565b5f610a76826109a8565b9050919050565b610a8681610a6c565b82525050565b5f602082019050610a9f5f830184610a7d565b92915050565b5f6020820190508181035f830152610abd818461091a565b905092915050565b5f81905092915050565b5f610ad9826108e2565b610ae38185610ac5565b9350610af38185602086016108fc565b80840191505092915050565b5f610b0a8284610acf565b915081905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610b4f8261090a565b810181811067ffffffffffffffff82111715610b6e57610b6d610b19565b5b80604052505050565b5f610b80610772565b9050610b8c8282610b46565b919050565b610b9a81610a3b565b8114610ba4575f80fd5b50565b5f81359050610bb581610b91565b92915050565b610bc481610a6c565b8114610bce575f80fd5b50565b5f81359050610bdf81610bbb565b92915050565b5f60808284031215610bfa57610bf9610b15565b5b610c046080610b77565b90505f610c1384828501610ba7565b5f830152506020610c2684828501610bd1565b6020830152506040610c3a848285016107c4565b6040830152506060610c4e84828501610ba7565b60608301525092915050565b5f60808284031215610c6f57610c6e61077b565b5b5f610c7c84828501610be5565b9150509291505056fea2646970667358221220fe6c75be65a23f4793221cf466df29bfea23e7a5257f32b5d09fee8d686b68a564736f6c634300081a0033",I0={},h0={},P={_format:l0,contractName:m0,sourceName:T0,abi:v0,bytecode:w0,deployedBytecode:M0,linkReferences:I0,deployedLinkReferences:h0},A0="hh-sol-artifact-1",g0="ERC721MintAction",R0="contracts/actions/ERC721MintAction.sol",O0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],x0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516115f66100c85f395f61053401526115f65ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c4714610332578063ea3d508a1461036e578063f04e283e14610398578063f2fde38b146103b4578063fee81cf4146103d057610113565b8063715018a61461026e5780638da5cb5b146102785780639a8a0592146102a2578063bec95277146102cc578063d4b839921461030857610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e67565b61040c565b60405161014a9190610eac565b60405180910390f35b61016d60048036038101906101689190610f26565b610485565b60405161017b929190610fe1565b60405180910390f35b61018c6104ba565b005b348015610199575f80fd5b506101a261050b565b6040516101af919061101e565b60405180910390f35b3480156101c3575f80fd5b506101cc610532565b6040516101d991906110b1565b60405180910390f35b3480156101ed575f80fd5b506101f6610556565b60405161020391906110e2565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f26565b61055c565b005b61023c6105e9565b005b61025860048036038101906102539190611160565b610622565b6040516102659190610eac565b60405180910390f35b61027661077f565b005b348015610283575f80fd5b5061028c610792565b60405161029991906111f3565b60405180910390f35b3480156102ad575f80fd5b506102b66107ba565b6040516102c391906110e2565b60405180910390f35b3480156102d7575f80fd5b506102f260048036038101906102ed919061120c565b6107bf565b6040516102ff9190610eac565b60405180910390f35b348015610313575f80fd5b5061031c6107dc565b60405161032991906111f3565b60405180910390f35b34801561033d575f80fd5b5061035860048036038101906103539190610f26565b610801565b6040516103659190611237565b60405180910390f35b348015610379575f80fd5b50610382610815565b60405161038f919061101e565b60405180910390f35b6103b260048036038101906103ad9190611257565b610828565b005b6103ce60048036038101906103c99190611257565b610866565b005b3480156103db575f80fd5b506103f660048036038101906103f19190611257565b61088f565b60405161040391906110e2565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047e575061047d826108a8565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104c3610921565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f61056561092b565b905080546003825580156105975760018160011c14303b1061058e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105af83838101906105aa9190611373565b610954565b80156105e4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106349190611489565b915091505f816106439061151b565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106b891906110e2565b602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611595565b73ffffffffffffffffffffffffffffffffffffffff16148015610735575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561076f57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610776565b5f93505050505b95945050505050565b6107876109e2565b6107905f610a19565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061080d8383610adf565b905092915050565b600160149054906101000a900460e01b81565b6108306109e2565b63389a75e1600c52805f526020600c20805442111561085657636f5e88185f526004601cfd5b5f81555061086381610a19565b50565b61086e6109e2565b8060601b61088357637448fbae5f526004601cfd5b61088c81610a19565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a575061091982610b03565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61095c610b7c565b61096533610ba0565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a17576382b429005f526004601cfd5b565b610a21610c76565b15610a86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610adc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610afb600160149054906101000a900460e01b8484610c7a565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b755750610b7482610ca6565b5b9050919050565b5f610b8561092b565b90508054600116610b9d5763d7e6bcf85f526004601cfd5b50565b610ba8610c76565b15610c20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610be257630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c73565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d185750610d1782610d1f565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d915750610d9082610d98565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e4681610e12565b8114610e50575f80fd5b50565b5f81359050610e6181610e3d565b92915050565b5f60208284031215610e7c57610e7b610e0a565b5b5f610e8984828501610e53565b91505092915050565b5f8115159050919050565b610ea681610e92565b82525050565b5f602082019050610ebf5f830184610e9d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ee657610ee5610ec5565b5b8235905067ffffffffffffffff811115610f0357610f02610ec9565b5b602083019150836001820283011115610f1f57610f1e610ecd565b5b9250929050565b5f8060208385031215610f3c57610f3b610e0a565b5b5f83013567ffffffffffffffff811115610f5957610f58610e0e565b5b610f6585828601610ed1565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fb382610f71565b610fbd8185610f7b565b9350610fcd818560208601610f8b565b610fd681610f99565b840191505092915050565b5f604082019050610ff45f830185610e9d565b81810360208301526110068184610fa9565b90509392505050565b61101881610e12565b82525050565b5f6020820190506110315f83018461100f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61107961107461106f84611037565b611056565b611037565b9050919050565b5f61108a8261105f565b9050919050565b5f61109b82611080565b9050919050565b6110ab81611091565b82525050565b5f6020820190506110c45f8301846110a2565b92915050565b5f819050919050565b6110dc816110ca565b82525050565b5f6020820190506110f55f8301846110d3565b92915050565b611104816110ca565b811461110e575f80fd5b50565b5f8135905061111f816110fb565b92915050565b5f61112f82611037565b9050919050565b61113f81611125565b8114611149575f80fd5b50565b5f8135905061115a81611136565b92915050565b5f805f805f6080868803121561117957611178610e0a565b5b5f61118688828901611111565b955050602061119788828901611111565b94505060406111a88882890161114c565b935050606086013567ffffffffffffffff8111156111c9576111c8610e0e565b5b6111d588828901610ed1565b92509250509295509295909350565b6111ed81611125565b82525050565b5f6020820190506112065f8301846111e4565b92915050565b5f6020828403121561122157611220610e0a565b5b5f61122e84828501611111565b91505092915050565b5f6020820190508181035f83015261124f8184610fa9565b905092915050565b5f6020828403121561126c5761126b610e0a565b5b5f6112798482850161114c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112bc82610f99565b810181811067ffffffffffffffff821117156112db576112da611286565b5b80604052505050565b5f6112ed610e01565b90506112f982826112b3565b919050565b5f6080828403121561131357611312611282565b5b61131d60806112e4565b90505f61132c84828501611111565b5f83015250602061133f8482850161114c565b602083015250604061135384828501610e53565b604083015250606061136784828501611111565b60608301525092915050565b5f6080828403121561138857611387610e0a565b5b5f611395848285016112fe565b91505092915050565b5f6113a882611037565b9050919050565b6113b88161139e565b81146113c2575f80fd5b50565b5f813590506113d3816113af565b92915050565b5f80fd5b5f67ffffffffffffffff8211156113f7576113f6611286565b5b61140082610f99565b9050602081019050919050565b828183375f83830152505050565b5f61142d611428846113dd565b6112e4565b905082815260208101848484011115611449576114486113d9565b5b61145484828561140d565b509392505050565b5f82601f8301126114705761146f610ec5565b5b813561148084826020860161141b565b91505092915050565b5f806040838503121561149f5761149e610e0a565b5b5f6114ac858286016113c5565b925050602083013567ffffffffffffffff8111156114cd576114cc610e0e565b5b6114d98582860161145c565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61150682516114f2565b80915050919050565b5f82821b905092915050565b5f61152582610f71565b8261152f846114e3565b905061153a816114fb565b9250602082101561157a576115757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261150f565b831692505b5050919050565b5f8151905061158f81611136565b92915050565b5f602082840312156115aa576115a9610e0a565b5b5f6115b784828501611581565b9150509291505056fea26469706673582212208cd0bdc2ce8ff3df85ecaf6e2269e57686b65ee716e3cac03754933fce34f39d64736f6c634300081a0033",C0="0x608060405260043610610113575f3560e01c8063715018a61161009f578063d7768c4711610063578063d7768c4714610332578063ea3d508a1461036e578063f04e283e14610398578063f2fde38b146103b4578063fee81cf4146103d057610113565b8063715018a61461026e5780638da5cb5b146102785780639a8a0592146102a2578063bec95277146102cc578063d4b839921461030857610113565b8063393df8cb116100e6578063393df8cb146101b85780633fa4f245146101e2578063439fab911461020c57806354d1f13d14610234578063703b69001461023e57610113565b806301ffc9a71461011757806309c5eabe14610153578063256929621461018457806328d6183b1461018e575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190610e67565b61040c565b60405161014a9190610eac565b60405180910390f35b61016d60048036038101906101689190610f26565b610485565b60405161017b929190610fe1565b60405180910390f35b61018c6104ba565b005b348015610199575f80fd5b506101a261050b565b6040516101af919061101e565b60405180910390f35b3480156101c3575f80fd5b506101cc610532565b6040516101d991906110b1565b60405180910390f35b3480156101ed575f80fd5b506101f6610556565b60405161020391906110e2565b60405180910390f35b348015610217575f80fd5b50610232600480360381019061022d9190610f26565b61055c565b005b61023c6105e9565b005b61025860048036038101906102539190611160565b610622565b6040516102659190610eac565b60405180910390f35b61027661077f565b005b348015610283575f80fd5b5061028c610792565b60405161029991906111f3565b60405180910390f35b3480156102ad575f80fd5b506102b66107ba565b6040516102c391906110e2565b60405180910390f35b3480156102d7575f80fd5b506102f260048036038101906102ed919061120c565b6107bf565b6040516102ff9190610eac565b60405180910390f35b348015610313575f80fd5b5061031c6107dc565b60405161032991906111f3565b60405180910390f35b34801561033d575f80fd5b5061035860048036038101906103539190610f26565b610801565b6040516103659190611237565b60405180910390f35b348015610379575f80fd5b50610382610815565b60405161038f919061101e565b60405180910390f35b6103b260048036038101906103ad9190611257565b610828565b005b6103ce60048036038101906103c99190611257565b610866565b005b3480156103db575f80fd5b506103f660048036038101906103f19190611257565b61088f565b60405161040391906110e2565b60405180910390f35b5f7f97e083eb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061047e575061047d826108a8565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104c3610921565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f97e083eb00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b5f61056561092b565b905080546003825580156105975760018160011c14303b1061058e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506105af83838101906105aa9190611373565b610954565b80156105e4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f84848101906106349190611489565b915091505f816106439061151b565b5f1c90508273ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016106b891906110e2565b602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611595565b73ffffffffffffffffffffffffffffffffffffffff16148015610735575060035f8281526020019081526020015f205f9054906101000a900460ff16155b1561076f57600160035f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060019350505050610776565b5f93505050505b95945050505050565b6107876109e2565b6107905f610a19565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f5481565b6003602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606061080d8383610adf565b905092915050565b600160149054906101000a900460e01b81565b6108306109e2565b63389a75e1600c52805f526020600c20805442111561085657636f5e88185f526004601cfd5b5f81555061086381610a19565b50565b61086e6109e2565b8060601b61088357637448fbae5f526004601cfd5b61088c81610a19565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091a575061091982610b03565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61095c610b7c565b61096533610ba0565b805f01515f81905550806020015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060400151600160146101000a81548163ffffffff021916908360e01c0217905550806060015160028190555050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a17576382b429005f526004601cfd5b565b610a21610c76565b15610a86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610adc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060610afb600160149054906101000a900460e01b8484610c7a565b905092915050565b5f7f6c3129aa000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b755750610b7482610ca6565b5b9050919050565b5f610b8561092b565b90508054600116610b9d5763d7e6bcf85f526004601cfd5b50565b610ba8610c76565b15610c20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610be257630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c73565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f90565b606081600401604051915080825260208101820160405284602083015282846024840137509392505050565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d185750610d1782610d1f565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d915750610d9082610d98565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610e4681610e12565b8114610e50575f80fd5b50565b5f81359050610e6181610e3d565b92915050565b5f60208284031215610e7c57610e7b610e0a565b5b5f610e8984828501610e53565b91505092915050565b5f8115159050919050565b610ea681610e92565b82525050565b5f602082019050610ebf5f830184610e9d565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610ee657610ee5610ec5565b5b8235905067ffffffffffffffff811115610f0357610f02610ec9565b5b602083019150836001820283011115610f1f57610f1e610ecd565b5b9250929050565b5f8060208385031215610f3c57610f3b610e0a565b5b5f83013567ffffffffffffffff811115610f5957610f58610e0e565b5b610f6585828601610ed1565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610fb382610f71565b610fbd8185610f7b565b9350610fcd818560208601610f8b565b610fd681610f99565b840191505092915050565b5f604082019050610ff45f830185610e9d565b81810360208301526110068184610fa9565b90509392505050565b61101881610e12565b82525050565b5f6020820190506110315f83018461100f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61107961107461106f84611037565b611056565b611037565b9050919050565b5f61108a8261105f565b9050919050565b5f61109b82611080565b9050919050565b6110ab81611091565b82525050565b5f6020820190506110c45f8301846110a2565b92915050565b5f819050919050565b6110dc816110ca565b82525050565b5f6020820190506110f55f8301846110d3565b92915050565b611104816110ca565b811461110e575f80fd5b50565b5f8135905061111f816110fb565b92915050565b5f61112f82611037565b9050919050565b61113f81611125565b8114611149575f80fd5b50565b5f8135905061115a81611136565b92915050565b5f805f805f6080868803121561117957611178610e0a565b5b5f61118688828901611111565b955050602061119788828901611111565b94505060406111a88882890161114c565b935050606086013567ffffffffffffffff8111156111c9576111c8610e0e565b5b6111d588828901610ed1565b92509250509295509295909350565b6111ed81611125565b82525050565b5f6020820190506112065f8301846111e4565b92915050565b5f6020828403121561122157611220610e0a565b5b5f61122e84828501611111565b91505092915050565b5f6020820190508181035f83015261124f8184610fa9565b905092915050565b5f6020828403121561126c5761126b610e0a565b5b5f6112798482850161114c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6112bc82610f99565b810181811067ffffffffffffffff821117156112db576112da611286565b5b80604052505050565b5f6112ed610e01565b90506112f982826112b3565b919050565b5f6080828403121561131357611312611282565b5b61131d60806112e4565b90505f61132c84828501611111565b5f83015250602061133f8482850161114c565b602083015250604061135384828501610e53565b604083015250606061136784828501611111565b60608301525092915050565b5f6080828403121561138857611387610e0a565b5b5f611395848285016112fe565b91505092915050565b5f6113a882611037565b9050919050565b6113b88161139e565b81146113c2575f80fd5b50565b5f813590506113d3816113af565b92915050565b5f80fd5b5f67ffffffffffffffff8211156113f7576113f6611286565b5b61140082610f99565b9050602081019050919050565b828183375f83830152505050565b5f61142d611428846113dd565b6112e4565b905082815260208101848484011115611449576114486113d9565b5b61145484828561140d565b509392505050565b5f82601f8301126114705761146f610ec5565b5b813561148084826020860161141b565b91505092915050565b5f806040838503121561149f5761149e610e0a565b5b5f6114ac858286016113c5565b925050602083013567ffffffffffffffff8111156114cd576114cc610e0e565b5b6114d98582860161145c565b9150509250929050565b5f819050602082019050919050565b5f819050919050565b5f61150682516114f2565b80915050919050565b5f82821b905092915050565b5f61152582610f71565b8261152f846114e3565b905061153a816114fb565b9250602082101561157a576115757fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080261150f565b831692505b5050919050565b5f8151905061158f81611136565b92915050565b5f602082840312156115aa576115a9610e0a565b5b5f6115b784828501611581565b9150509291505056fea26469706673582212208cd0bdc2ce8ff3df85ecaf6e2269e57686b65ee716e3cac03754933fce34f39d64736f6c634300081a0033",_0={},z0={},G={_format:A0,contractName:g0,sourceName:R0,abi:O0,bytecode:x0,deployedBytecode:C0,linkReferences:_0,deployedLinkReferences:z0},N0="hh-sol-artifact-1",E0="EventAction",$0="contracts/actions/EventAction.sol",k0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],L0="0x60a0604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6080516123db6100c85f395f61034a01526123db5ff3fe608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220c439b0e7103744e8335fa5fdedab4933ee347354f81aabdc240c3ec23e6a35fb64736f6c634300081a0033",H0="0x608060405260043610610090575f3560e01c80639bc1cf81116100585780639bc1cf811461017d578063c26624e8146101a7578063d7768c47146101e3578063dbdf21101461021f578063ddd6ab081461024957610090565b806301ffc9a71461009457806309c5eabe146100d057806328d6183b14610101578063393df8cb1461012b578063439fab9114610155575b5f80fd5b34801561009f575f80fd5b506100ba60048036038101906100b59190611385565b610273565b6040516100c791906113ca565b60405180910390f35b6100ea60048036038101906100e59190611444565b6102ec565b6040516100f89291906114ff565b60405180910390f35b34801561010c575f80fd5b50610115610321565b604051610122919061153c565b60405180910390f35b348015610136575f80fd5b5061013f610348565b60405161014c91906115cf565b60405180910390f35b348015610160575f80fd5b5061017b60048036038101906101769190611444565b61036c565b005b348015610188575f80fd5b506101916103f9565b60405161019e919061193b565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c89190611985565b610648565b6040516101da9190611a36565b60405180910390f35b3480156101ee575f80fd5b5061020960048036038101906102049190611444565b610875565b6040516102169190611a56565b60405180910390f35b34801561022a575f80fd5b506102336108a9565b6040516102409190611adc565b60405180910390f35b348015610254575f80fd5b5061025d610981565b60405161026a9190611b04565b60405180910390f35b5f7f7687b0ed000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102e557506102e48261098d565b5b9050919050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f7f7687b0ed00000000000000000000000000000000000000000000000000000000905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f610375610a06565b905080546003825580156103a75760018160011c14303b1061039e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b506103bf83838101906103ba9190612002565b610a2f565b80156103f4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b8282101561063f578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff16600181111561046a57610469611629565b5b600181111561047c5761047b611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff1660078111156105305761052f611629565b5b600781111561054257610541611629565b5b81526020015f820160019054906101000a900460ff16600381111561056a57610569611629565b5b600381111561057c5761057b611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546105ac90612076565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890612076565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b505050505081525050815250508152602001906001019061041c565b50505050905090565b610650611216565b60048281548110610664576106636120a6565b5b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156106a8576106a7611629565b5b60018111156106ba576106b9611629565b5b81526020016001820160019054906101000a900460ff1660ff1660ff1681526020016001820160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382016040518060800160405290815f82015f9054906101000a900460ff16600781111561076e5761076d611629565b5b60078111156107805761077f611629565b5b81526020015f820160019054906101000a900460ff1660038111156107a8576107a7611629565b5b60038111156107ba576107b9611629565b5b81526020015f820160029054906101000a900460ff1660ff1660ff1681526020016001820180546107ea90612076565b80601f016020809104026020016040519081016040528092919081815260200182805461081690612076565b80156108615780601f1061083857610100808354040283529160200191610861565b820191905f5260205f20905b81548152906001019060200180831161084457829003601f168201915b505050505081525050815250509050919050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108b161127b565b5f6040518060a00160405290815f82015f9054906101000a900460ff1660018111156108e0576108df611629565b5b60018111156108f2576108f1611629565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481525050905090565b5f600480549050905090565b5f7fe6715795000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ff57506109fe82611110565b5b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610a37611189565b805f01515f80820151815f015f6101000a81548160ff02191690836001811115610a6457610a63611629565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816003015590505060048160200151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610b4657610b45611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610bee57610bed611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610c1d57610c1c611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610c579190612267565b505050505060048160400151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610cbb57610cba611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610d6357610d62611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610d9257610d91611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610dcc9190612267565b505050505060048160600151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610e3057610e2f611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff02191690836007811115610ed857610ed7611629565b5b02179055506020820151815f0160016101000a81548160ff02191690836003811115610f0757610f06611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff1602179055506060820151816001019081610f419190612267565b505050505060048160800151908060018154018082558091505060019003905f5260205f2090600502015f909190919091505f820151815f01556020820151816001015f6101000a81548160ff02191690836001811115610fa557610fa4611629565b5b021790555060408201518160010160016101000a81548160ff021916908360ff16021790555060608201518160010160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816002015560a0820151816003015f820151815f015f6101000a81548160ff0219169083600781111561104d5761104c611629565b5b02179055506020820151815f0160016101000a81548160ff0219169083600381111561107c5761107b611629565b5b02179055506040820151815f0160026101000a81548160ff021916908360ff16021790555060608201518160010190816110b69190612267565b50505050507ff2cd382b92e0609edafee04c969decf0c2d04013cd112d0f0818268b11e84c69815f01518260200151836040015184606001518560800151604051611105959493929190612336565b60405180910390a150565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806111825750611181826111ad565b5b9050919050565b5f611192610a06565b905080546001166111aa5763d7e6bcf85f526004601cfd5b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6040518060c001604052805f80191681526020015f600181111561123d5761123c611629565b5b81526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020016112756112d3565b81525090565b6040518060a001604052805f600181111561129957611298611629565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b60405180608001604052805f60078111156112f1576112f0611629565b5b81526020015f600381111561130957611308611629565b5b81526020015f60ff168152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61136481611330565b811461136e575f80fd5b50565b5f8135905061137f8161135b565b92915050565b5f6020828403121561139a57611399611328565b5b5f6113a784828501611371565b91505092915050565b5f8115159050919050565b6113c4816113b0565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611404576114036113e3565b5b8235905067ffffffffffffffff811115611421576114206113e7565b5b60208301915083600182028301111561143d5761143c6113eb565b5b9250929050565b5f806020838503121561145a57611459611328565b5b5f83013567ffffffffffffffff8111156114775761147661132c565b5b611483858286016113ef565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6114d18261148f565b6114db8185611499565b93506114eb8185602086016114a9565b6114f4816114b7565b840191505092915050565b5f6040820190506115125f8301856113bb565b818103602083015261152481846114c7565b90509392505050565b61153681611330565b82525050565b5f60208201905061154f5f83018461152d565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61159761159261158d84611555565b611574565b611555565b9050919050565b5f6115a88261157d565b9050919050565b5f6115b98261159e565b9050919050565b6115c9816115af565b82525050565b5f6020820190506115e25f8301846115c0565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b61162381611611565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061166757611666611629565b5b50565b5f81905061167782611656565b919050565b5f6116868261166a565b9050919050565b6116968161167c565b82525050565b5f60ff82169050919050565b6116b18161169c565b82525050565b5f6116c182611555565b9050919050565b6116d1816116b7565b82525050565b5f819050919050565b6116e9816116d7565b82525050565b60088110611700576116ff611629565b5b50565b5f819050611710826116ef565b919050565b5f61171f82611703565b9050919050565b61172f81611715565b82525050565b6004811061174657611745611629565b5b50565b5f81905061175682611735565b919050565b5f61176582611749565b9050919050565b6117758161175b565b82525050565b5f82825260208201905092915050565b5f6117958261148f565b61179f818561177b565b93506117af8185602086016114a9565b6117b8816114b7565b840191505092915050565b5f608083015f8301516117d85f860182611726565b5060208301516117eb602086018261176c565b5060408301516117fe60408601826116a8565b5060608301518482036060860152611816828261178b565b9150508091505092915050565b5f60c083015f8301516118385f86018261161a565b50602083015161184b602086018261168d565b50604083015161185e60408601826116a8565b50606083015161187160608601826116c8565b50608083015161188460808601826116e0565b5060a083015184820360a086015261189c82826117c3565b9150508091505092915050565b5f6118b48383611823565b905092915050565b5f602082019050919050565b5f6118d2826115e8565b6118dc81856115f2565b9350836020820285016118ee85611602565b805f5b85811015611929578484038952815161190a85826118a9565b9450611915836118bc565b925060208a019950506001810190506118f1565b50829750879550505050505092915050565b5f6020820190508181035f83015261195381846118c8565b905092915050565b611964816116d7565b811461196e575f80fd5b50565b5f8135905061197f8161195b565b92915050565b5f6020828403121561199a57611999611328565b5b5f6119a784828501611971565b91505092915050565b5f60c083015f8301516119c55f86018261161a565b5060208301516119d8602086018261168d565b5060408301516119eb60408601826116a8565b5060608301516119fe60608601826116c8565b506080830151611a1160808601826116e0565b5060a083015184820360a0860152611a2982826117c3565b9150508091505092915050565b5f6020820190508181035f830152611a4e81846119b0565b905092915050565b5f6020820190508181035f830152611a6e81846114c7565b905092915050565b60a082015f820151611a8a5f85018261168d565b506020820151611a9d602085018261161a565b506040820151611ab060408501826116a8565b506060820151611ac360608501826116c8565b506080820151611ad660808501826116e0565b50505050565b5f60a082019050611aef5f830184611a76565b92915050565b611afe816116d7565b82525050565b5f602082019050611b175f830184611af5565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b57826114b7565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b8861131f565b9050611b948282611b4e565b919050565b5f80fd5b60028110611ba9575f80fd5b50565b5f81359050611bba81611b9d565b92915050565b611bc981611611565b8114611bd3575f80fd5b50565b5f81359050611be481611bc0565b92915050565b611bf38161169c565b8114611bfd575f80fd5b50565b5f81359050611c0e81611bea565b92915050565b611c1d816116b7565b8114611c27575f80fd5b50565b5f81359050611c3881611c14565b92915050565b5f60a08284031215611c5357611c52611b1d565b5b611c5d60a0611b7f565b90505f611c6c84828501611bac565b5f830152506020611c7f84828501611bd6565b6020830152506040611c9384828501611c00565b6040830152506060611ca784828501611c2a565b6060830152506080611cbb84828501611971565b60808301525092915050565b60088110611cd3575f80fd5b50565b5f81359050611ce481611cc7565b92915050565b60048110611cf6575f80fd5b50565b5f81359050611d0781611cea565b92915050565b5f80fd5b5f67ffffffffffffffff821115611d2b57611d2a611b21565b5b611d34826114b7565b9050602081019050919050565b828183375f83830152505050565b5f611d61611d5c84611d11565b611b7f565b905082815260208101848484011115611d7d57611d7c611d0d565b5b611d88848285611d41565b509392505050565b5f82601f830112611da457611da36113e3565b5b8135611db4848260208601611d4f565b91505092915050565b5f60808284031215611dd257611dd1611b1d565b5b611ddc6080611b7f565b90505f611deb84828501611cd6565b5f830152506020611dfe84828501611cf9565b6020830152506040611e1284828501611c00565b604083015250606082013567ffffffffffffffff811115611e3657611e35611b99565b5b611e4284828501611d90565b60608301525092915050565b5f60c08284031215611e6357611e62611b1d565b5b611e6d60c0611b7f565b90505f611e7c84828501611bd6565b5f830152506020611e8f84828501611bac565b6020830152506040611ea384828501611c00565b6040830152506060611eb784828501611c2a565b6060830152506080611ecb84828501611971565b60808301525060a082013567ffffffffffffffff811115611eef57611eee611b99565b5b611efb84828501611dbd565b60a08301525092915050565b5f6101208284031215611f1d57611f1c611b1d565b5b611f2760a0611b7f565b90505f611f3684828501611c3e565b5f8301525060a082013567ffffffffffffffff811115611f5957611f58611b99565b5b611f6584828501611e4e565b60208301525060c082013567ffffffffffffffff811115611f8957611f88611b99565b5b611f9584828501611e4e565b60408301525060e082013567ffffffffffffffff811115611fb957611fb8611b99565b5b611fc584828501611e4e565b60608301525061010082013567ffffffffffffffff811115611fea57611fe9611b99565b5b611ff684828501611e4e565b60808301525092915050565b5f6020828403121561201757612016611328565b5b5f82013567ffffffffffffffff8111156120345761203361132c565b5b61204084828501611f07565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061208d57607f821691505b6020821081036120a05761209f612049565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261212f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826120f4565b61213986836120f4565b95508019841693508086168417925050509392505050565b5f61216b612166612161846116d7565b611574565b6116d7565b9050919050565b5f819050919050565b61218483612151565b61219861219082612172565b848454612100565b825550505050565b5f90565b6121ac6121a0565b6121b781848461217b565b505050565b5b818110156121da576121cf5f826121a4565b6001810190506121bd565b5050565b601f82111561221f576121f0816120d3565b6121f9846120e5565b81016020851015612208578190505b61221c612214856120e5565b8301826121bc565b50505b505050565b5f82821c905092915050565b5f61223f5f1984600802612224565b1980831691505092915050565b5f6122578383612230565b9150826002028217905092915050565b6122708261148f565b67ffffffffffffffff81111561228957612288611b21565b5b6122938254612076565b61229e8282856121de565b5f60209050601f8311600181146122cf575f84156122bd578287015190505b6122c7858261224c565b86555061232e565b601f1984166122dd866120d3565b5f5b82811015612304578489015182556001820191506020850194506020810190506122df565b86831015612321578489015161231d601f891682612230565b8355505b6001600288020188555050505b505050505050565b5f6101208201905061234a5f830188611a76565b81810360a083015261235c81876119b0565b905081810360c083015261237081866119b0565b905081810360e083015261238481856119b0565b905081810361010083015261239981846119b0565b9050969550505050505056fea2646970667358221220c439b0e7103744e8335fa5fdedab4933ee347354f81aabdc240c3ec23e6a35fb64736f6c634300081a0033",D0={},B0={},Z={_format:N0,contractName:E0,sourceName:$0,abi:k0,bytecode:L0,deployedBytecode:H0,linkReferences:D0,deployedLinkReferences:B0},S0="hh-sol-artifact-1",V0="SimpleAllowList",q0="contracts/allowlists/SimpleAllowList.sol",F0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],U0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fe806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",P0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b80632de94807116101075780632de94807146102325780633abb06041461026e5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063183a4f6e1461018a5780631c10893f146101a65780631cd64df4146101c257806325692962146101fe57806328d6183b14610208575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116e565b61050c565b60405161018191906111b3565b60405180910390f35b6101a4600480360381019061019f91906111ff565b610585565b005b6101c060048036038101906101bb9190611284565b610592565b005b3480156101cd575f80fd5b506101e860048036038101906101e39190611284565b6105a8565b6040516101f591906111b3565b60405180910390f35b6102066105be565b005b348015610213575f80fd5b5061021c61060f565b60405161022991906112d1565b60405180910390f35b34801561023d575f80fd5b50610258600480360381019061025391906112ea565b610636565b6040516102659190611324565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f91906113f3565b61064f565b005b3480156102a1575f80fd5b506102bc60048036038101906102b791906113f3565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c6565b61089d565b005b61030060048036038101906102fb9190611284565b6109ba565b005b34801561030d575f80fd5b5061032860048036038101906103239190611284565b6109d0565b60405161033591906111b3565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611324565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611520565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158e565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158e565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160c565b610bcc565b60405161042991906111b3565b60405180910390f35b34801561043d575f80fd5b50610446610c1f565b6040516104539190611324565b60405180910390f35b610476600480360381019061047191906112ea565b610c24565b005b610492600480360381019061048d91906112ea565b610c62565b005b34801561049f575f80fd5b506104ba60048036038101906104b591906112ea565b610c8b565b6040516104c791906111b3565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f191906112ea565b610cde565b6040516105039190611324565b60405180910390f35b5f7f1392d798000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf7565b5b9050919050565b61058f3382610d70565b50565b61059a610d7f565b6105a48282610db6565b5050565b5f81826105b485610636565b1614905092915050565b5f6105c7610dc6565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f1392d79800000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b61065833610c8b565b61068e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181905084849050146106cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610788578282828181106106ed576106ec611669565b5b905060200201602081019061070291906116c0565b5f8087878581811061071757610716611669565b5b905060200201602081019061072c91906112ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106cf565b5050505050565b600261079a81610dd0565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f9611669565b5b905060200201602081019061080f91906116c0565b905060011515811515036108545761084f87878481811061083357610832611669565b5b905060200201602081019061084891906112ea565b6001610db6565b610887565b61088687878481811061086a57610869611669565b5b905060200201602081019061087f91906112ea565b6001610d70565b5b5080806001019150506107db565b505050505050565b5f6108a6610e05565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186e565b915091506108f782610e2e565b5f5b815181101561097d5760015f8084848151811061091957610918611669565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d7f565b6109cc8282610d70565b5050565b5f80826109dc85610636565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d7f565b610a315f610f04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd0565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc611669565b5b9050602002016020810190610ae291906112ea565b858584818110610af557610af4611669565b5b90506020020135610db6565b8080600101915050610aac565b505050505050565b6002610b2181610dd0565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b82611669565b5b9050602002016020810190610b9891906112ea565b858584818110610bab57610baa611669565b5b90506020020135610d70565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509392505050565b600181565b610c2c610d7f565b63389a75e1600c52805f526020600c208054421115610c5257636f5e88185f526004601cfd5b5f815550610c5f81610f04565b50565b610c6a610d7f565b8060601b610c7f57637448fbae5f526004601cfd5b610c8881610f04565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cab610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd75750610cd68260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d695750610d6882610fca565b5b9050919050565b610d7b82825f611043565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db4576382b429005f526004601cfd5b565b610dc282826001611043565b5050565b5f6202a300905090565b638b78c6d819543314610e0257638b78c6d8600c52335f52806020600c205416610e01576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3661109b565b15610eae577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f01565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0c61109b565b15610f71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103c575061103b8261109f565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106557848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114d81611119565b8114611157575f80fd5b50565b5f8135905061116881611144565b92915050565b5f6020828403121561118357611182611111565b5b5f6111908482850161115a565b91505092915050565b5f8115159050919050565b6111ad81611199565b82525050565b5f6020820190506111c65f8301846111a4565b92915050565b5f819050919050565b6111de816111cc565b81146111e8575f80fd5b50565b5f813590506111f9816111d5565b92915050565b5f6020828403121561121457611213611111565b5b5f611221848285016111eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112538261122a565b9050919050565b61126381611249565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299611111565b5b5f6112a785828601611270565b92505060206112b8858286016111eb565b9150509250929050565b6112cb81611119565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b5f602082840312156112ff576112fe611111565b5b5f61130c84828501611270565b91505092915050565b61131e816111cc565b82525050565b5f6020820190506113375f830184611315565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261135e5761135d61133d565b5b8235905067ffffffffffffffff81111561137b5761137a611341565b5b60208301915083602082028301111561139757611396611345565b5b9250929050565b5f8083601f8401126113b3576113b261133d565b5b8235905067ffffffffffffffff8111156113d0576113cf611341565b5b6020830191508360208202830111156113ec576113eb611345565b5b9250929050565b5f805f806040858703121561140b5761140a611111565b5b5f85013567ffffffffffffffff81111561142857611427611115565b5b61143487828801611349565b9450945050602085013567ffffffffffffffff81111561145757611456611115565b5b6114638782880161139e565b925092505092959194509250565b5f8083601f8401126114865761148561133d565b5b8235905067ffffffffffffffff8111156114a3576114a2611341565b5b6020830191508360018202830111156114bf576114be611345565b5b9250929050565b5f80602083850312156114dc576114db611111565b5b5f83013567ffffffffffffffff8111156114f9576114f8611115565b5b61150585828601611471565b92509250509250929050565b61151a81611249565b82525050565b5f6020820190506115335f830184611511565b92915050565b5f8083601f84011261154e5761154d61133d565b5b8235905067ffffffffffffffff81111561156b5761156a611341565b5b60208301915083602082028301111561158757611586611345565b5b9250929050565b5f805f80604085870312156115a6576115a5611111565b5b5f85013567ffffffffffffffff8111156115c3576115c2611115565b5b6115cf87828801611349565b9450945050602085013567ffffffffffffffff8111156115f2576115f1611115565b5b6115fe87828801611539565b925092505092959194509250565b5f805f6040848603121561162357611622611111565b5b5f61163086828701611270565b935050602084013567ffffffffffffffff81111561165157611650611115565b5b61165d86828701611471565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61169f81611199565b81146116a9575f80fd5b50565b5f813590506116ba81611696565b92915050565b5f602082840312156116d5576116d4611111565b5b5f6116e2848285016116ac565b91505092915050565b5f6116f58261122a565b9050919050565b611705816116eb565b811461170f575f80fd5b50565b5f81359050611720816116fc565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176c82611726565b810181811067ffffffffffffffff8211171561178b5761178a611736565b5b80604052505050565b5f61179d611108565b90506117a98282611763565b919050565b5f67ffffffffffffffff8211156117c8576117c7611736565b5b602082029050602081019050919050565b5f6117eb6117e6846117ae565b611794565b9050808382526020820190506020840283018581111561180e5761180d611345565b5b835b8181101561183757806118238882611270565b845260208401935050602081019050611810565b5050509392505050565b5f82601f8301126118555761185461133d565b5b81356118658482602086016117d9565b91505092915050565b5f806040838503121561188457611883611111565b5b5f61189185828601611712565b925050602083013567ffffffffffffffff8111156118b2576118b1611115565b5b6118be85828601611841565b915050925092905056fea264697066735822122090c78869e52e89aa7c5a8761f075c070cc7a94a0cc69bce24ebcce69c30c1b3464736f6c634300081a0033",G0={},Z0={},W={_format:S0,contractName:V0,sourceName:q0,abi:F0,bytecode:U0,deployedBytecode:P0,linkReferences:G0,deployedLinkReferences:Z0},W0="hh-sol-artifact-1",j0="SimpleDenyList",K0="contracts/allowlists/SimpleDenyList.sol",Q0=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Y0="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118ff806100bd5f395ff3fe60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",J0="0x60806040526004361061014a575f3560e01c806354d1f13d116100b5578063e3f756de1161006e578063e3f756de146103f6578063ec87621c14610432578063f04e283e1461045c578063f2fde38b14610478578063fe9fbb8014610494578063fee81cf4146104d05761014a565b806354d1f13d1461033e578063715018a61461034857806375b238fc146103525780638da5cb5b1461037c578063be4994f8146103a6578063dcc21361146103ce5761014a565b806328d6183b1161010757806328d6183b146102305780632de948071461025a5780634359d28a14610296578063439fab91146102be5780634a4ee7b1146102e6578063514e62fc146103025761014a565b806301ffc9a71461014e578063141973b01461018a578063183a4f6e146101b25780631c10893f146101ce5780631cd64df4146101ea5780632569296214610226575b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f919061116f565b61050c565b60405161018191906111b4565b60405180910390f35b348015610195575f80fd5b506101b060048036038101906101ab9190611283565b610585565b005b6101cc60048036038101906101c79190611334565b6106c5565b005b6101e860048036038101906101e391906113b9565b6106d2565b005b3480156101f5575f80fd5b50610210600480360381019061020b91906113b9565b6106e8565b60405161021d91906111b4565b60405180910390f35b61022e6106fe565b005b34801561023b575f80fd5b5061024461074f565b6040516102519190611406565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b919061141f565b610776565b60405161028d9190611459565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190611283565b61078f565b005b3480156102c9575f80fd5b506102e460048036038101906102df91906114c7565b61089d565b005b61030060048036038101906102fb91906113b9565b6109ba565b005b34801561030d575f80fd5b50610328600480360381019061032391906113b9565b6109d0565b60405161033591906111b4565b60405180910390f35b6103466109e7565b005b610350610a20565b005b34801561035d575f80fd5b50610366610a33565b6040516103739190611459565b60405180910390f35b348015610387575f80fd5b50610390610a38565b60405161039d9190611521565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061158f565b610a60565b005b3480156103d9575f80fd5b506103f460048036038101906103ef919061158f565b610b16565b005b348015610401575f80fd5b5061041c6004803603810190610417919061160d565b610bcc565b60405161042991906111b4565b60405180910390f35b34801561043d575f80fd5b50610446610c20565b6040516104539190611459565b60405180910390f35b6104766004803603810190610471919061141f565b610c25565b005b610492600480360381019061048d919061141f565b610c63565b005b34801561049f575f80fd5b506104ba60048036038101906104b5919061141f565b610c8c565b6040516104c791906111b4565b60405180910390f35b3480156104db575f80fd5b506104f660048036038101906104f1919061141f565b610cdf565b6040516105039190611459565b60405180910390f35b5f7f3d30a22c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057e575061057d82610cf8565b5b9050919050565b61058e33610c8c565b6105c4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610603576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848490508110156106be578282828181106106235761062261166a565b5b905060200201602081019061063891906116c1565b5f8087878581811061064d5761064c61166a565b5b9050602002016020810190610662919061141f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610605565b5050505050565b6106cf3382610d71565b50565b6106da610d80565b6106e48282610db7565b5050565b5f81826106f485610776565b1614905092915050565b5f610707610dc7565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f3d30a22c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b600261079a81610dd1565b8282905085859050146107d9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610895575f8484838181106107fa576107f961166a565b5b905060200201602081019061080f91906116c1565b905060011515811515036108545761084f8787848181106108335761083261166a565b5b9050602002016020810190610848919061141f565b6001610db7565b610887565b61088687878481811061086a5761086961166a565b5b905060200201602081019061087f919061141f565b6001610d71565b5b5080806001019150506107db565b505050505050565b5f6108a6610e06565b905080546003825580156108d85760018160011c14303b106108cf5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906108ea919061186f565b915091506108f782610e2f565b5f5b815181101561097d5760015f808484815181106109195761091861166a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108f9565b50505080156109b5576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6109c2610d80565b6109cc8282610d71565b5050565b5f80826109dc85610776565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a28610d80565b610a315f610f05565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6002610a6b81610dd1565b828290508585905014610aaa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b0e57610b01868683818110610acd57610acc61166a565b5b9050602002016020810190610ae2919061141f565b858584818110610af557610af461166a565b5b90506020020135610db7565b8080600101915050610aac565b505050505050565b6002610b2181610dd1565b828290508585905014610b60576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610bc457610bb7868683818110610b8357610b8261166a565b5b9050602002016020810190610b98919061141f565b858584818110610bab57610baa61166a565b5b90506020020135610d71565b8080600101915050610b62565b505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590509392505050565b600181565b610c2d610d80565b63389a75e1600c52805f526020600c208054421115610c5357636f5e88185f526004601cfd5b5f815550610c6081610f05565b50565b610c6b610d80565b8060601b610c8057637448fbae5f526004601cfd5b610c8981610f05565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16610cac610a38565b73ffffffffffffffffffffffffffffffffffffffff161480610cd85750610cd78260026001176109d0565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe2089f79000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d6a5750610d6982610fcb565b5b9050919050565b610d7c82825f611044565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610db5576382b429005f526004601cfd5b565b610dc382826001611044565b5050565b5f6202a300905090565b638b78c6d819543314610e0357638b78c6d8600c52335f52806020600c205416610e02576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610e3761109c565b15610eaf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610e7157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610f02565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b610f0d61109c565b15610f72577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610fc8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061103d575061103c826110a0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361106657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114e8161111a565b8114611158575f80fd5b50565b5f8135905061116981611145565b92915050565b5f6020828403121561118457611183611112565b5b5f6111918482850161115b565b91505092915050565b5f8115159050919050565b6111ae8161119a565b82525050565b5f6020820190506111c75f8301846111a5565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126111ee576111ed6111cd565b5b8235905067ffffffffffffffff81111561120b5761120a6111d1565b5b602083019150836020820283011115611227576112266111d5565b5b9250929050565b5f8083601f840112611243576112426111cd565b5b8235905067ffffffffffffffff8111156112605761125f6111d1565b5b60208301915083602082028301111561127c5761127b6111d5565b5b9250929050565b5f805f806040858703121561129b5761129a611112565b5b5f85013567ffffffffffffffff8111156112b8576112b7611116565b5b6112c4878288016111d9565b9450945050602085013567ffffffffffffffff8111156112e7576112e6611116565b5b6112f38782880161122e565b925092505092959194509250565b5f819050919050565b61131381611301565b811461131d575f80fd5b50565b5f8135905061132e8161130a565b92915050565b5f6020828403121561134957611348611112565b5b5f61135684828501611320565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6113888261135f565b9050919050565b6113988161137e565b81146113a2575f80fd5b50565b5f813590506113b38161138f565b92915050565b5f80604083850312156113cf576113ce611112565b5b5f6113dc858286016113a5565b92505060206113ed85828601611320565b9150509250929050565b6114008161111a565b82525050565b5f6020820190506114195f8301846113f7565b92915050565b5f6020828403121561143457611433611112565b5b5f611441848285016113a5565b91505092915050565b61145381611301565b82525050565b5f60208201905061146c5f83018461144a565b92915050565b5f8083601f840112611487576114866111cd565b5b8235905067ffffffffffffffff8111156114a4576114a36111d1565b5b6020830191508360018202830111156114c0576114bf6111d5565b5b9250929050565b5f80602083850312156114dd576114dc611112565b5b5f83013567ffffffffffffffff8111156114fa576114f9611116565b5b61150685828601611472565b92509250509250929050565b61151b8161137e565b82525050565b5f6020820190506115345f830184611512565b92915050565b5f8083601f84011261154f5761154e6111cd565b5b8235905067ffffffffffffffff81111561156c5761156b6111d1565b5b602083019150836020820283011115611588576115876111d5565b5b9250929050565b5f805f80604085870312156115a7576115a6611112565b5b5f85013567ffffffffffffffff8111156115c4576115c3611116565b5b6115d0878288016111d9565b9450945050602085013567ffffffffffffffff8111156115f3576115f2611116565b5b6115ff8782880161153a565b925092505092959194509250565b5f805f6040848603121561162457611623611112565b5b5f611631868287016113a5565b935050602084013567ffffffffffffffff81111561165257611651611116565b5b61165e86828701611472565b92509250509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6116a08161119a565b81146116aa575f80fd5b50565b5f813590506116bb81611697565b92915050565b5f602082840312156116d6576116d5611112565b5b5f6116e3848285016116ad565b91505092915050565b5f6116f68261135f565b9050919050565b611706816116ec565b8114611710575f80fd5b50565b5f81359050611721816116fd565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61176d82611727565b810181811067ffffffffffffffff8211171561178c5761178b611737565b5b80604052505050565b5f61179e611109565b90506117aa8282611764565b919050565b5f67ffffffffffffffff8211156117c9576117c8611737565b5b602082029050602081019050919050565b5f6117ec6117e7846117af565b611795565b9050808382526020820190506020840283018581111561180f5761180e6111d5565b5b835b81811015611838578061182488826113a5565b845260208401935050602081019050611811565b5050509392505050565b5f82601f830112611856576118556111cd565b5b81356118668482602086016117da565b91505092915050565b5f806040838503121561188557611884611112565b5b5f61189285828601611713565b925050602083013567ffffffffffffffff8111156118b3576118b2611116565b5b6118bf85828601611842565b915050925092905056fea264697066735822122029eec1d270425718605fbc01b81abc5d40218a340b220c3d7418c05996387e6a64736f6c634300081a0033",X0={},ff={},j={_format:W0,contractName:j0,sourceName:K0,abi:Q0,bytecode:Y0,deployedBytecode:J0,linkReferences:X0,deployedLinkReferences:ff},bf="hh-sol-artifact-1",ef="ManagedBudget",af="contracts/budgets/ManagedBudget.sol",df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],tf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b613931806100bd5f395ff3fe608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",nf="0x608060405260043610610212575f3560e01c8063715018a611610117578063ec87621c1161009f578063f8724aba1161006e578063f8724aba146107b6578063f9a802c3146107f2578063fa4ca9b11461082e578063fe9fbb801461086a578063fee81cf4146108a657610219565b8063ec87621c14610718578063f04e283e14610742578063f23a6e611461075e578063f2fde38b1461079a57610219565b8063b3005793116100e6578063b300579314610613578063bc197c8114610650578063be4994f81461068c578063d2514e84146106b4578063dcc21361146106f057610219565b8063715018a61461057957806375b238fc14610583578063774c33ab146105ad5780638da5cb5b146105e957610219565b8063439fab911161019a578063514e62fc11610169578063514e62fc1461048b57806354d1f13d146104c7578063578bcf35146104d15780635aef467a1461050d57806361400c991461053d57610219565b8063439fab91146103cf578063451cc191146103f7578063474f5a44146104335780634a4ee7b11461046f57610219565b80631cd64df4116101e15780631cd64df4146102fb578063256929621461033757806328d6183b146103415780632de948071461036b5780634359d28a146103a757610219565b806301ffc9a71461024b57806310098ad514610287578063183a4f6e146102c35780631c10893f146102df57610219565b3661021957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610256575f80fd5b50610271600480360381019061026c91906126fd565b6108e2565b60405161027e9190612742565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906127b5565b610a2b565b6040516102ba91906127f8565b60405180910390f35b6102dd60048036038101906102d8919061283b565b610a96565b005b6102f960048036038101906102f49190612866565b610aa3565b005b348015610306575f80fd5b50610321600480360381019061031c9190612866565b610ab9565b60405161032e9190612742565b60405180910390f35b61033f610acf565b005b34801561034c575f80fd5b50610355610b20565b60405161036291906128b3565b60405180910390f35b348015610376575f80fd5b50610391600480360381019061038c91906127b5565b610b47565b60405161039e91906127f8565b60405180910390f35b3480156103b2575f80fd5b506103cd60048036038101906103c89190612982565b610b60565b005b3480156103da575f80fd5b506103f560048036038101906103f09190612a55565b610c6e565b005b348015610402575f80fd5b5061041d60048036038101906104189190612a55565b610d66565b60405161042a91906127f8565b60405180910390f35b34801561043e575f80fd5b5061045960048036038101906104549190612a55565b610d6d565b60405161046691906127f8565b60405180910390f35b61048960048036038101906104849190612866565b610f66565b005b348015610496575f80fd5b506104b160048036038101906104ac9190612866565b610f7c565b6040516104be9190612742565b60405180910390f35b6104cf610f93565b005b3480156104dc575f80fd5b506104f760048036038101906104f291906127b5565b610fcc565b60405161050491906127f8565b60405180910390f35b61052760048036038101906105229190612a55565b611011565b6040516105349190612742565b60405180910390f35b348015610548575f80fd5b50610563600480360381019061055e9190612af5565b611381565b6040516105709190612742565b60405180910390f35b6105816113e5565b005b34801561058e575f80fd5b506105976113f8565b6040516105a491906127f8565b60405180910390f35b3480156105b8575f80fd5b506105d360048036038101906105ce9190612866565b6113fd565b6040516105e091906127f8565b60405180910390f35b3480156105f4575f80fd5b506105fd611453565b60405161060a9190612b4f565b60405180910390f35b34801561061e575f80fd5b5061063960048036038101906106349190612b68565b61147b565b604051610647929190612bec565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c68565b611638565b60405161068391906128b3565b60405180910390f35b348015610697575f80fd5b506106b260048036038101906106ad9190612d3f565b61164f565b005b3480156106bf575f80fd5b506106da60048036038101906106d591906127b5565b611705565b6040516106e791906127f8565b60405180910390f35b3480156106fb575f80fd5b5061071660048036038101906107119190612d3f565b61175d565b005b348015610723575f80fd5b5061072c611813565b60405161073991906127f8565b60405180910390f35b61075c600480360381019061075791906127b5565b611818565b005b348015610769575f80fd5b50610784600480360381019061077f9190612dbd565b611856565b60405161079191906128b3565b60405180910390f35b6107b460048036038101906107af91906127b5565b61186b565b005b3480156107c1575f80fd5b506107dc60048036038101906107d79190612866565b611894565b6040516107e991906127f8565b60405180910390f35b3480156107fd575f80fd5b5061081860048036038101906108139190612866565b611916565b60405161082591906127f8565b60405180910390f35b348015610839575f80fd5b50610854600480360381019061084f9190612a55565b6119ef565b6040516108619190612742565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906127b5565b611cf4565b60405161089d9190612742565b60405180910390f35b3480156108b1575f80fd5b506108cc60048036038101906108c791906127b5565b611d47565b6040516108d991906127f8565b60405180910390f35b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109ac57507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a1457507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a245750610a2382611d60565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8d57610a88308373ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b610a8f565b475b9050919050565b610aa03382611e0c565b50565b610aab611e1b565b610ab58282611e52565b5050565b5f8182610ac585610b47565b1614905092915050565b5f610ad8611e62565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f5fbfaa4e00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610b6b81611e6c565b828290508585905014610baa576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c66575f848483818110610bcb57610bca612e53565b5b9050602002016020810190610be09190612eaa565b90506001151581151503610c2557610c20878784818110610c0457610c03612e53565b5b9050602002016020810190610c1991906127b5565b6001611e52565b610c58565b610c57878784818110610c3b57610c3a612e53565b5b9050602002016020810190610c5091906127b5565b6001611e0c565b5b508080600101915050610bac565b505050505050565b5f610c77611ea1565b90508054600382558015610ca95760018160011c14303b10610ca05763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610cba919061317e565b9050610cc8815f0151611eca565b5f5b816020015151811015610d2a57610d1d82602001518281518110610cf157610cf0612e53565b5b602002602001015183604001518381518110610d1057610d0f612e53565b5b6020026020010151611fa0565b8080600101915050610cca565b50508015610d61576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f6002610d7981611e6c565b5f8484810190610d899190613329565b90505f806002811115610d9f57610d9e613370565b5b825f01516002811115610db557610db4613370565b5b1480610de8575060016002811115610dd057610dcf613370565b5b825f01516002811115610de657610de5613370565b5b145b15610e47575f8260600151806020019051810190610e0691906133ea565b9050610e3b836020015184604001515f845f015114610e2857835f0151610e36565b610e358660200151610a2b565b5b611fe1565b805f0151915050610f59565b600280811115610e5a57610e59613370565b5b825f01516002811115610e7057610e6f613370565b5b03610f4e575f8260600151806020019051810190610e8e919061350e565b9050610f4183602001518460400151835f01515f856020015114610eb6578460200151610f37565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b8152600401610ef7929190613555565b602060405180830381865afa158015610f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f36919061357c565b5b85604001516121a7565b8060200151915050610f58565b8093505050610f5f565b5b80935050505b5092915050565b610f6e611e1b565b610f788282611e0c565b5050565b5f8082610f8885610b47565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906110229190613329565b90505f600281111561103757611036613370565b5b815f0151600281111561104d5761104c613370565b5b036110c3575f816060015180602001905181019061106b91906133ea565b9050805f015134146110bd578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016110b4929190613555565b60405180910390fd5b50611375565b600160028111156110d7576110d6613370565b5b815f015160028111156110ed576110ec613370565b5b036111c8575f816060015180602001905181019061110b91906133ea565b9050611145826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff166123d3909392919063ffffffff16565b805f015161117630846020015173ffffffffffffffffffffffffffffffffffffffff16611dd990919063ffffffff16565b10156111c2578160200151815f01516040517fcece04c50000000000000000000000000000000000000000000000000000000081526004016111b9929190613555565b60405180910390fd5b50611374565b6002808111156111db576111da613370565b5b815f015160028111156111f1576111f0613370565b5b0361136a575f816060015180602001905181019061120f919061350e565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b81526004016112659594939291906135f9565b5f604051808303815f87803b15801561127c575f80fd5b505af115801561128e573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b81526004016112d8929190613555565b602060405180830381865afa1580156112f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611317919061357c565b101561136457816020015181602001516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161135b929190613555565b60405180910390fd5b50611373565b5f91505061137b565b5b5b60019150505b92915050565b5f805f90505b838390508110156113d9576113bf8484838181106113a8576113a7612e53565b5b90506020028101906113ba919061365d565b6119ef565b6113cc575f9150506113df565b8080600101915050611387565b50600190505b92915050565b6113ed611e1b565b6113f65f61242d565b565b600281565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f8061148633611cf4565b6114bc576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c856040516020016115609190613750565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161158f93929190613770565b60408051808303815f875af11580156115aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ce91906137c0565b91509150815f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461161d919061382b565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b600261165a81611e6c565b828290508585905014611699576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116fd576116f08686838181106116bc576116bb612e53565b5b90506020020160208101906116d191906127b5565b8585848181106116e4576116e3612e53565b5b90506020020135611e52565b808060010191505061169b565b505050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461174c83610a2b565b611756919061385e565b9050919050565b600261176881611e6c565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c9612e53565b5b90506020020160208101906117df91906127b5565b8585848181106117f2576117f1612e53565b5b90506020020135611e0c565b80806001019150506117a9565b505050505050565b600181565b611820611e1b565b63389a75e1600c52805f526020600c20805442111561184657636f5e88185f526004601cfd5b5f8155506118538161242d565b50565b5f63f23a6e6160e01b90509695505050505050565b611873611e1b565b8060601b61188857637448fbae5f526004601cfd5b6118918161242d565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b81526004016118cf929190613555565b602060405180830381865afa1580156118ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190e919061357c565b905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b815260040161199e929190613555565b602060405180830381865afa1580156119b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119dd919061357c565b6119e7919061385e565b905092915050565b5f6119f933611cf4565b611a2f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190611a3f9190613329565b905060016002811115611a5557611a54613370565b5b815f01516002811115611a6b57611a6a613370565b5b1480611a9d57505f6002811115611a8557611a84613370565b5b815f01516002811115611a9b57611a9a613370565b5b145b15611b96575f8160600151806020019051810190611abb91906133ea565b90505f611acb8360200151610a2b565b905080825f01511115611b2057826020015181835f01516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611b1793929190613891565b60405180910390fd5b815f01515f80856020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b72919061385e565b92505081905550611b8f83602001518460400151845f0151611fe1565b5050611ce8565b600280811115611ba957611ba8613370565b5b815f01516002811115611bbf57611bbe613370565b5b03611cde575f8160600151806020019051810190611bdd919061350e565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611c21929190613555565b602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061357c565b90508082602001511115611cb75782602001518183602001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611cae93929190613891565b60405180910390fd5b611cd783602001518460400151845f0151856020015186604001516121a7565b5050611ce7565b5f915050611cee565b5b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611d14611453565b73ffffffffffffffffffffffffffffffffffffffff161480611d405750611d3f826002600117610f7c565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611dd25750611dd1826124f3565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611e1782825f61256c565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611e50576382b429005f526004601cfd5b565b611e5e8282600161256c565b5050565b5f6202a300905090565b638b78c6d819543314611e9e57638b78c6d8600c52335f52806020600c205416611e9d576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611ed26125c4565b15611f4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611f0c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611f9d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611fff5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361207f578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612076939291906138c6565b60405180910390fd5b61208883610a2b565b8111156120d8578261209984610a2b565b826040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016120cf93929190613891565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361211a5761211582826125c8565b612146565b61214582828573ffffffffffffffffffffffffffffffffffffffff166125e59092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542838360405161218e929190613555565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd2126854036121c55763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612245578484836040517fbf182be800000000000000000000000000000000000000000000000000000000815260040161223c939291906138c6565b60405180910390fd5b61224f8584611894565b8211156122a057846122618685611894565b836040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161229793929190613891565b60405180910390fd5b8160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f8282546122fb919061385e565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b81526004016123439594939291906135f9565b5f604051808303815f87803b15801561235a575f80fd5b505af115801561236c573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354285846040516123b8929190613555565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661241e57637939f4245f526004601cfd5b5f606052806040525050505050565b6124356125c4565b1561249a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b82178155506124f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256557506125648261262e565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361258e57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16125e15763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716612625576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6126dc816126a8565b81146126e6575f80fd5b50565b5f813590506126f7816126d3565b92915050565b5f60208284031215612712576127116126a0565b5b5f61271f848285016126e9565b91505092915050565b5f8115159050919050565b61273c81612728565b82525050565b5f6020820190506127555f830184612733565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127848261275b565b9050919050565b6127948161277a565b811461279e575f80fd5b50565b5f813590506127af8161278b565b92915050565b5f602082840312156127ca576127c96126a0565b5b5f6127d7848285016127a1565b91505092915050565b5f819050919050565b6127f2816127e0565b82525050565b5f60208201905061280b5f8301846127e9565b92915050565b61281a816127e0565b8114612824575f80fd5b50565b5f8135905061283581612811565b92915050565b5f602082840312156128505761284f6126a0565b5b5f61285d84828501612827565b91505092915050565b5f806040838503121561287c5761287b6126a0565b5b5f612889858286016127a1565b925050602061289a85828601612827565b9150509250929050565b6128ad816126a8565b82525050565b5f6020820190506128c65f8301846128a4565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128ed576128ec6128cc565b5b8235905067ffffffffffffffff81111561290a576129096128d0565b5b602083019150836020820283011115612926576129256128d4565b5b9250929050565b5f8083601f840112612942576129416128cc565b5b8235905067ffffffffffffffff81111561295f5761295e6128d0565b5b60208301915083602082028301111561297b5761297a6128d4565b5b9250929050565b5f805f806040858703121561299a576129996126a0565b5b5f85013567ffffffffffffffff8111156129b7576129b66126a4565b5b6129c3878288016128d8565b9450945050602085013567ffffffffffffffff8111156129e6576129e56126a4565b5b6129f28782880161292d565b925092505092959194509250565b5f8083601f840112612a1557612a146128cc565b5b8235905067ffffffffffffffff811115612a3257612a316128d0565b5b602083019150836001820283011115612a4e57612a4d6128d4565b5b9250929050565b5f8060208385031215612a6b57612a6a6126a0565b5b5f83013567ffffffffffffffff811115612a8857612a876126a4565b5b612a9485828601612a00565b92509250509250929050565b5f8083601f840112612ab557612ab46128cc565b5b8235905067ffffffffffffffff811115612ad257612ad16128d0565b5b602083019150836020820283011115612aee57612aed6128d4565b5b9250929050565b5f8060208385031215612b0b57612b0a6126a0565b5b5f83013567ffffffffffffffff811115612b2857612b276126a4565b5b612b3485828601612aa0565b92509250509250929050565b612b498161277a565b82525050565b5f602082019050612b625f830184612b40565b92915050565b5f805f805f60808688031215612b8157612b806126a0565b5b5f612b8e888289016127a1565b955050602086013567ffffffffffffffff811115612baf57612bae6126a4565b5b612bbb88828901612a00565b94509450506040612bce88828901612827565b9250506060612bdf88828901612827565b9150509295509295909350565b5f604082019050612bff5f8301856127e9565b612c0c6020830184612b40565b9392505050565b5f8083601f840112612c2857612c276128cc565b5b8235905067ffffffffffffffff811115612c4557612c446128d0565b5b602083019150836020820283011115612c6157612c606128d4565b5b9250929050565b5f805f805f805f8060a0898b031215612c8457612c836126a0565b5b5f612c918b828c016127a1565b9850506020612ca28b828c016127a1565b975050604089013567ffffffffffffffff811115612cc357612cc26126a4565b5b612ccf8b828c01612c13565b9650965050606089013567ffffffffffffffff811115612cf257612cf16126a4565b5b612cfe8b828c01612c13565b9450945050608089013567ffffffffffffffff811115612d2157612d206126a4565b5b612d2d8b828c01612a00565b92509250509295985092959890939650565b5f805f8060408587031215612d5757612d566126a0565b5b5f85013567ffffffffffffffff811115612d7457612d736126a4565b5b612d80878288016128d8565b9450945050602085013567ffffffffffffffff811115612da357612da26126a4565b5b612daf87828801612c13565b925092505092959194509250565b5f805f805f8060a08789031215612dd757612dd66126a0565b5b5f612de489828a016127a1565b9650506020612df589828a016127a1565b9550506040612e0689828a01612827565b9450506060612e1789828a01612827565b935050608087013567ffffffffffffffff811115612e3857612e376126a4565b5b612e4489828a01612a00565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b612e8981612728565b8114612e93575f80fd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe6126a0565b5b5f612ecc84828501612e96565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1f82612ed9565b810181811067ffffffffffffffff82111715612f3e57612f3d612ee9565b5b80604052505050565b5f612f50612697565b9050612f5c8282612f16565b919050565b5f80fd5b5f67ffffffffffffffff821115612f7f57612f7e612ee9565b5b602082029050602081019050919050565b5f612fa2612f9d84612f65565b612f47565b90508083825260208201905060208402830185811115612fc557612fc46128d4565b5b835b81811015612fee5780612fda88826127a1565b845260208401935050602081019050612fc7565b5050509392505050565b5f82601f83011261300c5761300b6128cc565b5b813561301c848260208601612f90565b91505092915050565b5f67ffffffffffffffff82111561303f5761303e612ee9565b5b602082029050602081019050919050565b5f61306261305d84613025565b612f47565b90508083825260208201905060208402830185811115613085576130846128d4565b5b835b818110156130ae578061309a8882612827565b845260208401935050602081019050613087565b5050509392505050565b5f82601f8301126130cc576130cb6128cc565b5b81356130dc848260208601613050565b91505092915050565b5f606082840312156130fa576130f9612ed5565b5b6131046060612f47565b90505f613113848285016127a1565b5f83015250602082013567ffffffffffffffff81111561313657613135612f61565b5b61314284828501612ff8565b602083015250604082013567ffffffffffffffff81111561316657613165612f61565b5b613172848285016130b8565b60408301525092915050565b5f60208284031215613193576131926126a0565b5b5f82013567ffffffffffffffff8111156131b0576131af6126a4565b5b6131bc848285016130e5565b91505092915050565b600381106131d1575f80fd5b50565b5f813590506131e2816131c5565b92915050565b5f80fd5b5f67ffffffffffffffff82111561320657613205612ee9565b5b61320f82612ed9565b9050602081019050919050565b828183375f83830152505050565b5f61323c613237846131ec565b612f47565b905082815260208101848484011115613258576132576131e8565b5b61326384828561321c565b509392505050565b5f82601f83011261327f5761327e6128cc565b5b813561328f84826020860161322a565b91505092915050565b5f608082840312156132ad576132ac612ed5565b5b6132b76080612f47565b90505f6132c6848285016131d4565b5f8301525060206132d9848285016127a1565b60208301525060406132ed848285016127a1565b604083015250606082013567ffffffffffffffff81111561331157613310612f61565b5b61331d8482850161326b565b60608301525092915050565b5f6020828403121561333e5761333d6126a0565b5b5f82013567ffffffffffffffff81111561335b5761335a6126a4565b5b61336784828501613298565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f815190506133ab81612811565b92915050565b5f602082840312156133c6576133c5612ed5565b5b6133d06020612f47565b90505f6133df8482850161339d565b5f8301525092915050565b5f602082840312156133ff576133fe6126a0565b5b5f61340c848285016133b1565b91505092915050565b8281835e5f83830152505050565b5f613435613430846131ec565b612f47565b905082815260208101848484011115613451576134506131e8565b5b61345c848285613415565b509392505050565b5f82601f830112613478576134776128cc565b5b8151613488848260208601613423565b91505092915050565b5f606082840312156134a6576134a5612ed5565b5b6134b06060612f47565b90505f6134bf8482850161339d565b5f8301525060206134d28482850161339d565b602083015250604082015167ffffffffffffffff8111156134f6576134f5612f61565b5b61350284828501613464565b60408301525092915050565b5f60208284031215613523576135226126a0565b5b5f82015167ffffffffffffffff8111156135405761353f6126a4565b5b61354c84828501613491565b91505092915050565b5f6040820190506135685f830185612b40565b61357560208301846127e9565b9392505050565b5f60208284031215613591576135906126a0565b5b5f61359e8482850161339d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6135cb826135a7565b6135d581856135b1565b93506135e5818560208601613415565b6135ee81612ed9565b840191505092915050565b5f60a08201905061360c5f830188612b40565b6136196020830187612b40565b61362660408301866127e9565b61363360608301856127e9565b818103608083015261364581846135c1565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261367957613678613651565b5b80840192508235915067ffffffffffffffff82111561369b5761369a613655565b5b6020830192506001820236038313156136b7576136b6613659565b5b509250929050565b6136c88161277a565b82525050565b5f82825260208201905092915050565b5f6136e8826135a7565b6136f281856136ce565b9350613702818560208601613415565b61370b81612ed9565b840191505092915050565b5f604083015f83015161372b5f8601826136bf565b506020830151848203602086015261374382826136de565b9150508091505092915050565b5f6020820190508181035f8301526137688184613716565b905092915050565b5f6060820190508181035f83015261378881866135c1565b905061379760208301856127e9565b6137a460408301846127e9565b949350505050565b5f815190506137ba8161278b565b92915050565b5f80604083850312156137d6576137d56126a0565b5b5f6137e38582860161339d565b92505060206137f4858286016137ac565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613835826127e0565b9150613840836127e0565b9250828203905081811115613858576138576137fe565b5b92915050565b5f613868826127e0565b9150613873836127e0565b925082820190508082111561388b5761388a6137fe565b5b92915050565b5f6060820190506138a45f830186612b40565b6138b160208301856127e9565b6138be60408301846127e9565b949350505050565b5f6060820190506138d95f830186612b40565b6138e66020830185612b40565b6138f360408301846127e9565b94935050505056fea264697066735822122043386a0ed4af64176291e3c82bd6ee953f22a90e82505ad77b38b8fa2956d75864736f6c634300081a0033",cf={},sf={},K={_format:bf,contractName:ef,sourceName:af,abi:df,bytecode:tf,deployedBytecode:nf,linkReferences:cf,deployedLinkReferences:sf},pf="hh-sol-artifact-1",yf="ManagedBudgetWithFees",rf="contracts/budgets/ManagedBudgetWithFees.sol",uf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],of="0x6080604052348015600e575f80fd5b50601b602b60201b60201c565b6027602b60201b60201c565b60bc565b5f6038609360201b60201c565b90508054600181161560515763f92ee8a95f526004601cfd5b8160c01c808260011c14608e578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b614ba6806100c95f395ff3fe60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220534f1d7ff748f85a2c6e450291819d88bad09ea01cc040a573543ce8f29ad27e64736f6c634300081a0033",lf="0x60806040526004361061025f575f3560e01c8063715018a611610143578063dcc21361116100b5578063f8724aba11610079578063f8724aba14610946578063f9a802c314610982578063fa4ca9b1146109be578063fe56e232146109fa578063fe9fbb8014610a22578063fee81cf414610a5e57610266565b8063dcc2136114610880578063ec87621c146108a8578063f04e283e146108d2578063f23a6e61146108ee578063f2fde38b1461092a57610266565b8063b300579311610107578063b30057931461072b578063bc197c8114610768578063be4994f8146107a4578063c6004a3a146107cc578063d2514e8414610808578063d8c12d221461084457610266565b8063715018a61461066757806375b238fc14610671578063774c33ab1461069b5780638da5cb5b146106d7578063a6f7f5d61461070157610266565b80634359d28a116101dc5780634a4ee7b1116101a05780634a4ee7b11461055d578063514e62fc1461057957806354d1f13d146105b5578063578bcf35146105bf5780635aef467a146105fb57806361400c991461062b57610266565b80634359d28a1461046d578063439fab911461049557806343cc96e1146104bd578063451cc191146104e5578063474f5a441461052157610266565b80631c10893f116102235780631c10893f146103a55780631cd64df4146103c157806325692962146103fd57806328d6183b146104075780632de948071461043157610266565b806301ffc9a71461029857806310098ad5146102d457806314135ce014610310578063183a4f6e1461034c578063185832a31461036857610266565b3661026657005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156102a3575f80fd5b506102be60048036038101906102b991906133d9565b610a9a565b6040516102cb919061341e565b60405180910390f35b3480156102df575f80fd5b506102fa60048036038101906102f59190613491565b610aab565b60405161030791906134d4565b60405180910390f35b34801561031b575f80fd5b5061033660048036038101906103319190613491565b610b04565b60405161034391906134d4565b60405180910390f35b61036660048036038101906103619190613517565b610b19565b005b348015610373575f80fd5b5061038e600480360381019061038991906135a3565b610b26565b60405161039c929190613636565b60405180910390f35b6103bf60048036038101906103ba919061365d565b610b51565b005b3480156103cc575f80fd5b506103e760048036038101906103e2919061365d565b610b67565b6040516103f4919061341e565b60405180910390f35b610405610b7d565b005b348015610412575f80fd5b5061041b610bce565b60405161042891906136aa565b60405180910390f35b34801561043c575f80fd5b5061045760048036038101906104529190613491565b610bf5565b60405161046491906134d4565b60405180910390f35b348015610478575f80fd5b50610493600480360381019061048e919061376d565b610c0e565b005b3480156104a0575f80fd5b506104bb60048036038101906104b691906137eb565b610d1c565b005b3480156104c8575f80fd5b506104e360048036038101906104de9190613836565b610efe565b005b3480156104f0575f80fd5b5061050b600480360381019061050691906137eb565b61131d565b60405161051891906134d4565b60405180910390f35b34801561052c575f80fd5b50610547600480360381019061054291906137eb565b611324565b60405161055491906134d4565b60405180910390f35b6105776004803603810190610572919061365d565b61151d565b005b348015610584575f80fd5b5061059f600480360381019061059a919061365d565b611533565b6040516105ac919061341e565b60405180910390f35b6105bd61154a565b005b3480156105ca575f80fd5b506105e560048036038101906105e09190613491565b611583565b6040516105f291906134d4565b60405180910390f35b610615600480360381019061061091906137eb565b6115c9565b604051610622919061341e565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c91906138c9565b611939565b60405161065e919061341e565b60405180910390f35b61066f61199d565b005b34801561067c575f80fd5b506106856119b0565b60405161069291906134d4565b60405180910390f35b3480156106a6575f80fd5b506106c160048036038101906106bc919061365d565b6119b5565b6040516106ce91906134d4565b60405180910390f35b3480156106e2575f80fd5b506106eb611a0b565b6040516106f89190613914565b60405180910390f35b34801561070c575f80fd5b50610715611a33565b60405161072291906134d4565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906135a3565b611a39565b60405161075f929190613636565b60405180910390f35b348015610773575f80fd5b5061078e60048036038101906107899190613982565b611bf7565b60405161079b91906136aa565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190613a59565b611c0e565b005b3480156107d7575f80fd5b506107f260048036038101906107ed9190613491565b611cc4565b6040516107ff91906134d4565b60405180910390f35b348015610813575f80fd5b5061082e60048036038101906108299190613491565b611cd9565b60405161083b91906134d4565b60405180910390f35b34801561084f575f80fd5b5061086a60048036038101906108659190613491565b611d7a565b60405161087791906134d4565b60405180910390f35b34801561088b575f80fd5b506108a660048036038101906108a19190613a59565b611d8f565b005b3480156108b3575f80fd5b506108bc611e45565b6040516108c991906134d4565b60405180910390f35b6108ec60048036038101906108e79190613491565b611e4a565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613ad7565b611e88565b60405161092191906136aa565b60405180910390f35b610944600480360381019061093f9190613491565b611e9d565b005b348015610951575f80fd5b5061096c6004803603810190610967919061365d565b611ec6565b60405161097991906134d4565b60405180910390f35b34801561098d575f80fd5b506109a860048036038101906109a3919061365d565b611f48565b6040516109b591906134d4565b60405180910390f35b3480156109c9575f80fd5b506109e460048036038101906109df91906137eb565b612021565b6040516109f1919061341e565b60405180910390f35b348015610a05575f80fd5b50610a206004803603810190610a1b9190613517565b6123fc565b005b348015610a2d575f80fd5b50610a486004803603810190610a439190613491565b61248e565b604051610a55919061341e565b60405180910390f35b348015610a69575f80fd5b50610a846004803603810190610a7f9190613491565b6124e1565b604051610a9191906134d4565b60405180910390f35b5f610aa4826124fa565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610af383612573565b610afd9190613b9a565b9050919050565b6004602052805f5260405f205f915090505481565b610b2333826125de565b50565b5f80610b358787878787611a39565b8092508193505050610b478484610efe565b9550959350505050565b610b596125ed565b610b638282612624565b5050565b5f8182610b7385610bf5565b1614905092915050565b5f610b86612634565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fde98bbf000000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610c198161263e565b828290508585905014610c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610d14575f848483818110610c7957610c78613bcd565b5b9050602002016020810190610c8e9190613c24565b90506001151581151503610cd357610cce878784818110610cb257610cb1613bcd565b5b9050602002016020810190610cc79190613491565b6001612624565b610d06565b610d05878784818110610ce957610ce8613bcd565b5b9050602002016020810190610cfe9190613491565b60016125de565b5b508080600101915050610c5a565b505050505050565b5f610d25612673565b90508054600382558015610d575760018160011c14303b10610d4e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610d689190613f0c565b9050610d76815f015161269c565b5f5b816020015151811015610dd857610dcb82602001518281518110610d9f57610d9e613bcd565b5b602002602001015183604001518381518110610dbe57610dbd613bcd565b5b6020026020010151612772565b8080600101915050610d78565b505f81602001515103610e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1790613fad565b60405180910390fd5b80602001515f81518110610e3757610e36613bcd565b5b60200260200101515f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606001516001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788160600151604051610ebb91906134d4565b60405180910390a1508015610ef9576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166313c8e2de846040518263ffffffff1660e01b8152600401610f5891906134d4565b5f60405180830381865afa158015610f72573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f9a919061430b565b90505f81608001518381518110610fb457610fb3613bcd565b5b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f7cc1d5bb000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161101791906136aa565b602060405180830381865afa158015611032573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110569190614366565b15611153575f8173ffffffffffffffffffffffffffffffffffffffff1663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ca9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611117573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113b9190614391565b905061114a86868685856127b3565b50505050611319565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77f90318111000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016111ac91906136aa565b602060405180830381865afa1580156111c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111eb9190614366565b156112e7575f8173ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af115801561123b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125f9190614391565b90505f8273ffffffffffffffffffffffffffffffffffffffff1663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cf9190614391565b90506112de86868685856127b3565b50505050611319565b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f92915050565b5f60026113308161263e565b5f84848101906113409190614520565b90505f80600281111561135657611355614567565b5b825f0151600281111561136c5761136b614567565b5b148061139f57506001600281111561138757611386614567565b5b825f0151600281111561139d5761139c614567565b5b145b156113fe575f82606001518060200190518101906113bd91906145cd565b90506113f2836020015184604001515f845f0151146113df57835f01516113ed565b6113ec8660200151610aab565b5b612ac8565b805f0151915050611510565b60028081111561141157611410614567565b5b825f0151600281111561142757611426614567565b5b03611505575f826060015180602001905181019061144591906146f1565b90506114f883602001518460400151835f01515f85602001511461146d5784602001516114ee565b866020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30875f01516040518363ffffffff1660e01b81526004016114ae929190614738565b602060405180830381865afa1580156114c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ed9190614391565b5b8560400151612c8e565b806020015191505061150f565b8093505050611516565b5b80935050505b5092915050565b6115256125ed565b61152f82826125de565b5050565b5f808261153f85610bf5565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8083838101906115da9190614520565b90505f60028111156115ef576115ee614567565b5b815f0151600281111561160557611604614567565b5b0361167b575f816060015180602001905181019061162391906145cd565b9050805f01513414611675578160200151815f01516040517fcece04c500000000000000000000000000000000000000000000000000000000815260040161166c929190614738565b60405180910390fd5b5061192d565b6001600281111561168f5761168e614567565b5b815f015160028111156116a5576116a4614567565b5b03611780575f81606001518060200190518101906116c391906145cd565b90506116fd826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16612eba909392919063ffffffff16565b805f015161172e30846020015173ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b101561177a578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611771929190614738565b60405180910390fd5b5061192c565b60028081111561179357611792614567565b5b815f015160028111156117a9576117a8614567565b5b03611922575f81606001518060200190518101906117c791906146f1565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161181d9594939291906147b1565b5f604051808303815f87803b158015611834575f80fd5b505af1158015611846573d5f803e3d5ffd5b505050508060200151826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401611890929190614738565b602060405180830381865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190614391565b101561191c57816020015181602001516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401611913929190614738565b60405180910390fd5b5061192b565b5f915050611933565b5b5b60019150505b92915050565b5f805f90505b83839050811015611991576119778484838181106119605761195f613bcd565b5b90506020028101906119729190614815565b612021565b611984575f915050611997565b808060010191505061193f565b50600190505b92915050565b6119a56125ed565b6119ae5f612f47565b565b600281565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60015481565b5f80611a443361248e565b611a7a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090505f8890505f808273ffffffffffffffffffffffffffffffffffffffff1663dd98558c85604051602001611b1e9190614908565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b8152600401611b4d93929190614928565b60408051808303815f875af1158015611b68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8c9190614964565b915091508160055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bdc9190613b9a565b92505081905550818195509550505050509550959350505050565b5f63bc197c8160e01b905098975050505050505050565b6002611c198161263e565b828290508585905014611c58576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611cbc57611caf868683818110611c7b57611c7a613bcd565b5b9050602002016020810190611c909190613491565b858584818110611ca357611ca2613bcd565b5b90506020020135612624565b8080600101915050611c5a565b505050505050565b6003602052805f5260405f205f915090505481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d5f84610aab565b611d6991906149a2565b611d7391906149a2565b9050919050565b6002602052805f5260405f205f915090505481565b6002611d9a8161263e565b828290508585905014611dd9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611e3d57611e30868683818110611dfc57611dfb613bcd565b5b9050602002016020810190611e119190613491565b858584818110611e2457611e23613bcd565b5b905060200201356125de565b8080600101915050611ddb565b505050505050565b600181565b611e526125ed565b63389a75e1600c52805f526020600c208054421115611e7857636f5e88185f526004601cfd5b5f815550611e8581612f47565b50565b5f63f23a6e6160e01b90509695505050505050565b611ea56125ed565b8060601b611eba57637448fbae5f526004601cfd5b611ec381612f47565b50565b5f8273ffffffffffffffffffffffffffffffffffffffff1662fdd58e30846040518363ffffffff1660e01b8152600401611f01929190614738565b602060405180830381865afa158015611f1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f409190614391565b905092915050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20548373ffffffffffffffffffffffffffffffffffffffff1662fdd58e30856040518363ffffffff1660e01b8152600401611fd0929190614738565b602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190614391565b61201991906149a2565b905092915050565b5f61202b3361248e565b612061576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906120719190614520565b90506001600281111561208757612086614567565b5b815f0151600281111561209d5761209c614567565b5b14806120cf57505f60028111156120b7576120b6614567565b5b815f015160028111156120cd576120cc614567565b5b145b1561229e575f81606001518060200190518101906120ed91906145cd565b90505f612710600154835f015161210491906149d5565b61210e9190614a43565b90505f61211e8460200151610aab565b90508082845f015161213091906149a2565b11156121895783602001518183855f015161214b91906149a2565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815260040161218093929190614a73565b60405180910390fd5b8160025f866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461221f91906149a2565b92505081905550825f015160055f866020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461227991906149a2565b9250508190555061229684602001518560400151855f0151612ac8565b5050506123f0565b6002808111156122b1576122b0614567565b5b815f015160028111156122c7576122c6614567565b5b036123e6575f81606001518060200190518101906122e591906146f1565b90505f826020015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e30845f01516040518363ffffffff1660e01b8152600401612329929190614738565b602060405180830381865afa158015612344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123689190614391565b905080826020015111156123bf5782602001518183602001516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526004016123b693929190614a73565b60405180910390fd5b6123df83602001518460400151845f015185602001518660400151612c8e565b50506123ef565b5f9150506123f6565b5b60019150505b92915050565b60026124078161263e565b61271082111561244c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244390614af2565b60405180910390fd5b816001819055507f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09788260405161248291906134d4565b60405180910390a15050565b5f8173ffffffffffffffffffffffffffffffffffffffff166124ae611a0b565b73ffffffffffffffffffffffffffffffffffffffff1614806124da57506124d9826002600117611533565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fde98bbf0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061256c575061256b8261300d565b5b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d5576125d0308373ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b6125d7565b475b9050919050565b6125e982825f613156565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314612622576382b429005f526004601cfd5b565b61263082826001613156565b5050565b5f6202a300905090565b638b78c6d81954331461267057638b78c6d8600c52335f52806020600c20541661266f576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6126a46131ae565b1561271c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156126de57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061276f565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f836080015185815181106127cb576127ca613bcd565b5b602002602001015190505f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8185878561286691906149d5565b6128709190614a43565b61287a9190613b9a565b9050808261288891906149a2565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8473ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612913573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129379190614b10565b90505f8860e0015190508260045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461298d9190613b9a565b925050819055505f83036129cd576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483856129da91906149a2565b03612a605760025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f905560035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555b8073ffffffffffffffffffffffffffffffffffffffff168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b486604051612aa891906134d4565b60405180910390a4612abb828285612ac8565b5050505050505050505050565b3068929eee149b4bd212685403612ae65763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b66578282826040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612b5d93929190614b3b565b60405180910390fd5b612b6f83610aab565b811115612bbf5782612b8084610aab565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612bb693929190614a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c0157612bfc82826131b2565b612c2d565b612c2c82828573ffffffffffffffffffffffffffffffffffffffff166131cf9092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051612c75929190614738565b60405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403612cac5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612d2c578484836040517fbf182be8000000000000000000000000000000000000000000000000000000008152600401612d2393929190614b3b565b60405180910390fd5b612d368584611ec6565b821115612d875784612d488685611ec6565b836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401612d7e93929190614a73565b60405180910390fd5b8160065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f828254612de291906149a2565b925050819055508473ffffffffffffffffffffffffffffffffffffffff1663f242432a30868686866040518663ffffffff1660e01b8152600401612e2a9594939291906147b1565b5f604051808303815f87803b158015612e41575f80fd5b505af1158015612e53573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428584604051612e9f929190614738565b60405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716612f0557637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b612f4f6131ae565b15612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061300a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f5fbfaa4e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806130d757507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061313f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061314f575061314e82613218565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361317857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af16131cb5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661320f576390b8ec185f526004601cfd5b5f603452505050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061328a575061328982613291565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061330357506133028261330a565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133b881613384565b81146133c2575f80fd5b50565b5f813590506133d3816133af565b92915050565b5f602082840312156133ee576133ed61337c565b5b5f6133fb848285016133c5565b91505092915050565b5f8115159050919050565b61341881613404565b82525050565b5f6020820190506134315f83018461340f565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61346082613437565b9050919050565b61347081613456565b811461347a575f80fd5b50565b5f8135905061348b81613467565b92915050565b5f602082840312156134a6576134a561337c565b5b5f6134b38482850161347d565b91505092915050565b5f819050919050565b6134ce816134bc565b82525050565b5f6020820190506134e75f8301846134c5565b92915050565b6134f6816134bc565b8114613500575f80fd5b50565b5f81359050613511816134ed565b92915050565b5f6020828403121561352c5761352b61337c565b5b5f61353984828501613503565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261356357613562613542565b5b8235905067ffffffffffffffff8111156135805761357f613546565b5b60208301915083600182028301111561359c5761359b61354a565b5b9250929050565b5f805f805f608086880312156135bc576135bb61337c565b5b5f6135c98882890161347d565b955050602086013567ffffffffffffffff8111156135ea576135e9613380565b5b6135f68882890161354e565b9450945050604061360988828901613503565b925050606061361a88828901613503565b9150509295509295909350565b61363081613456565b82525050565b5f6040820190506136495f8301856134c5565b6136566020830184613627565b9392505050565b5f80604083850312156136735761367261337c565b5b5f6136808582860161347d565b925050602061369185828601613503565b9150509250929050565b6136a481613384565b82525050565b5f6020820190506136bd5f83018461369b565b92915050565b5f8083601f8401126136d8576136d7613542565b5b8235905067ffffffffffffffff8111156136f5576136f4613546565b5b6020830191508360208202830111156137115761371061354a565b5b9250929050565b5f8083601f84011261372d5761372c613542565b5b8235905067ffffffffffffffff81111561374a57613749613546565b5b6020830191508360208202830111156137665761376561354a565b5b9250929050565b5f805f80604085870312156137855761378461337c565b5b5f85013567ffffffffffffffff8111156137a2576137a1613380565b5b6137ae878288016136c3565b9450945050602085013567ffffffffffffffff8111156137d1576137d0613380565b5b6137dd87828801613718565b925092505092959194509250565b5f80602083850312156138015761380061337c565b5b5f83013567ffffffffffffffff81111561381e5761381d613380565b5b61382a8582860161354e565b92509250509250929050565b5f806040838503121561384c5761384b61337c565b5b5f61385985828601613503565b925050602061386a85828601613503565b9150509250929050565b5f8083601f84011261388957613888613542565b5b8235905067ffffffffffffffff8111156138a6576138a5613546565b5b6020830191508360208202830111156138c2576138c161354a565b5b9250929050565b5f80602083850312156138df576138de61337c565b5b5f83013567ffffffffffffffff8111156138fc576138fb613380565b5b61390885828601613874565b92509250509250929050565b5f6020820190506139275f830184613627565b92915050565b5f8083601f84011261394257613941613542565b5b8235905067ffffffffffffffff81111561395f5761395e613546565b5b60208301915083602082028301111561397b5761397a61354a565b5b9250929050565b5f805f805f805f8060a0898b03121561399e5761399d61337c565b5b5f6139ab8b828c0161347d565b98505060206139bc8b828c0161347d565b975050604089013567ffffffffffffffff8111156139dd576139dc613380565b5b6139e98b828c0161392d565b9650965050606089013567ffffffffffffffff811115613a0c57613a0b613380565b5b613a188b828c0161392d565b9450945050608089013567ffffffffffffffff811115613a3b57613a3a613380565b5b613a478b828c0161354e565b92509250509295985092959890939650565b5f805f8060408587031215613a7157613a7061337c565b5b5f85013567ffffffffffffffff811115613a8e57613a8d613380565b5b613a9a878288016136c3565b9450945050602085013567ffffffffffffffff811115613abd57613abc613380565b5b613ac98782880161392d565b925092505092959194509250565b5f805f805f8060a08789031215613af157613af061337c565b5b5f613afe89828a0161347d565b9650506020613b0f89828a0161347d565b9550506040613b2089828a01613503565b9450506060613b3189828a01613503565b935050608087013567ffffffffffffffff811115613b5257613b51613380565b5b613b5e89828a0161354e565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613ba4826134bc565b9150613baf836134bc565b9250828203905081811115613bc757613bc6613b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613c0381613404565b8114613c0d575f80fd5b50565b5f81359050613c1e81613bfa565b92915050565b5f60208284031215613c3957613c3861337c565b5b5f613c4684828501613c10565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c9982613c53565b810181811067ffffffffffffffff82111715613cb857613cb7613c63565b5b80604052505050565b5f613cca613373565b9050613cd68282613c90565b919050565b5f80fd5b5f67ffffffffffffffff821115613cf957613cf8613c63565b5b602082029050602081019050919050565b5f613d1c613d1784613cdf565b613cc1565b90508083825260208201905060208402830185811115613d3f57613d3e61354a565b5b835b81811015613d685780613d54888261347d565b845260208401935050602081019050613d41565b5050509392505050565b5f82601f830112613d8657613d85613542565b5b8135613d96848260208601613d0a565b91505092915050565b5f67ffffffffffffffff821115613db957613db8613c63565b5b602082029050602081019050919050565b5f613ddc613dd784613d9f565b613cc1565b90508083825260208201905060208402830185811115613dff57613dfe61354a565b5b835b81811015613e285780613e148882613503565b845260208401935050602081019050613e01565b5050509392505050565b5f82601f830112613e4657613e45613542565b5b8135613e56848260208601613dca565b91505092915050565b5f60808284031215613e7457613e73613c4f565b5b613e7e6080613cc1565b90505f613e8d8482850161347d565b5f83015250602082013567ffffffffffffffff811115613eb057613eaf613cdb565b5b613ebc84828501613d72565b602083015250604082013567ffffffffffffffff811115613ee057613edf613cdb565b5b613eec84828501613e32565b6040830152506060613f0084828501613503565b60608301525092915050565b5f60208284031215613f2157613f2061337c565b5b5f82013567ffffffffffffffff811115613f3e57613f3d613380565b5b613f4a84828501613e5f565b91505092915050565b5f82825260208201905092915050565b7f6e6f20636f726520636f6e7472616374207365740000000000000000000000005f82015250565b5f613f97601483613f53565b9150613fa282613f63565b602082019050919050565b5f6020820190508181035f830152613fc481613f8b565b9050919050565b5f613fd582613456565b9050919050565b613fe581613fcb565b8114613fef575f80fd5b50565b5f8151905061400081613fdc565b92915050565b5f61401082613456565b9050919050565b61402081614006565b811461402a575f80fd5b50565b5f8151905061403b81614017565b92915050565b5f61404b82613456565b9050919050565b61405b81614041565b8114614065575f80fd5b50565b5f8151905061407681614052565b92915050565b5f61408682613437565b9050919050565b5f6140978261407c565b9050919050565b6140a78161408d565b81146140b1575f80fd5b50565b5f815190506140c28161409e565b92915050565b5f67ffffffffffffffff8211156140e2576140e1613c63565b5b602082029050602081019050919050565b5f6140fd82613456565b9050919050565b61410d816140f3565b8114614117575f80fd5b50565b5f8151905061412881614104565b92915050565b5f61414061413b846140c8565b613cc1565b905080838252602082019050602084028301858111156141635761416261354a565b5b835b8181101561418c5780614178888261411a565b845260208401935050602081019050614165565b5050509392505050565b5f82601f8301126141aa576141a9613542565b5b81516141ba84826020860161412e565b91505092915050565b5f67ffffffffffffffff82169050919050565b6141df816141c3565b81146141e9575f80fd5b50565b5f815190506141fa816141d6565b92915050565b5f8151905061420e816134ed565b92915050565b5f8151905061422281613467565b92915050565b5f610100828403121561423e5761423d613c4f565b5b614249610100613cc1565b90505f61425884828501613ff2565b5f83015250602061426b8482850161402d565b602083015250604061427f84828501614068565b6040830152506060614293848285016140b4565b606083015250608082015167ffffffffffffffff8111156142b7576142b6613cdb565b5b6142c384828501614196565b60808301525060a06142d7848285016141ec565b60a08301525060c06142eb84828501614200565b60c08301525060e06142ff84828501614214565b60e08301525092915050565b5f602082840312156143205761431f61337c565b5b5f82015167ffffffffffffffff81111561433d5761433c613380565b5b61434984828501614228565b91505092915050565b5f8151905061436081613bfa565b92915050565b5f6020828403121561437b5761437a61337c565b5b5f61438884828501614352565b91505092915050565b5f602082840312156143a6576143a561337c565b5b5f6143b384828501614200565b91505092915050565b600381106143c8575f80fd5b50565b5f813590506143d9816143bc565b92915050565b5f80fd5b5f67ffffffffffffffff8211156143fd576143fc613c63565b5b61440682613c53565b9050602081019050919050565b828183375f83830152505050565b5f61443361442e846143e3565b613cc1565b90508281526020810184848401111561444f5761444e6143df565b5b61445a848285614413565b509392505050565b5f82601f83011261447657614475613542565b5b8135614486848260208601614421565b91505092915050565b5f608082840312156144a4576144a3613c4f565b5b6144ae6080613cc1565b90505f6144bd848285016143cb565b5f8301525060206144d08482850161347d565b60208301525060406144e48482850161347d565b604083015250606082013567ffffffffffffffff81111561450857614507613cdb565b5b61451484828501614462565b60608301525092915050565b5f602082840312156145355761453461337c565b5b5f82013567ffffffffffffffff81111561455257614551613380565b5b61455e8482850161448f565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312156145a9576145a8613c4f565b5b6145b36020613cc1565b90505f6145c284828501614200565b5f8301525092915050565b5f602082840312156145e2576145e161337c565b5b5f6145ef84828501614594565b91505092915050565b8281835e5f83830152505050565b5f614618614613846143e3565b613cc1565b905082815260208101848484011115614634576146336143df565b5b61463f8482856145f8565b509392505050565b5f82601f83011261465b5761465a613542565b5b815161466b848260208601614606565b91505092915050565b5f6060828403121561468957614688613c4f565b5b6146936060613cc1565b90505f6146a284828501614200565b5f8301525060206146b584828501614200565b602083015250604082015167ffffffffffffffff8111156146d9576146d8613cdb565b5b6146e584828501614647565b60408301525092915050565b5f602082840312156147065761470561337c565b5b5f82015167ffffffffffffffff81111561472357614722613380565b5b61472f84828501614674565b91505092915050565b5f60408201905061474b5f830185613627565b61475860208301846134c5565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6147838261475f565b61478d8185614769565b935061479d8185602086016145f8565b6147a681613c53565b840191505092915050565b5f60a0820190506147c45f830188613627565b6147d16020830187613627565b6147de60408301866134c5565b6147eb60608301856134c5565b81810360808301526147fd8184614779565b90509695505050505050565b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261483157614830614809565b5b80840192508235915067ffffffffffffffff8211156148535761485261480d565b5b60208301925060018202360383131561486f5761486e614811565b5b509250929050565b61488081613456565b82525050565b5f82825260208201905092915050565b5f6148a08261475f565b6148aa8185614886565b93506148ba8185602086016145f8565b6148c381613c53565b840191505092915050565b5f604083015f8301516148e35f860182614877565b50602083015184820360208601526148fb8282614896565b9150508091505092915050565b5f6020820190508181035f83015261492081846148ce565b905092915050565b5f6060820190508181035f8301526149408186614779565b905061494f60208301856134c5565b61495c60408301846134c5565b949350505050565b5f806040838503121561497a5761497961337c565b5b5f61498785828601614200565b925050602061499885828601614214565b9150509250929050565b5f6149ac826134bc565b91506149b7836134bc565b92508282019050808211156149cf576149ce613b6d565b5b92915050565b5f6149df826134bc565b91506149ea836134bc565b92508282026149f8816134bc565b91508282048414831517614a0f57614a0e613b6d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614a4d826134bc565b9150614a58836134bc565b925082614a6857614a67614a16565b5b828204905092915050565b5f606082019050614a865f830186613627565b614a9360208301856134c5565b614aa060408301846134c5565b949350505050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f614adc601683613f53565b9150614ae782614aa8565b602082019050919050565b5f6020820190508181035f830152614b0981614ad0565b9050919050565b5f60208284031215614b2557614b2461337c565b5b5f614b3284828501614214565b91505092915050565b5f606082019050614b4e5f830186613627565b614b5b6020830185613627565b614b6860408301846134c5565b94935050505056fea2646970667358221220534f1d7ff748f85a2c6e450291819d88bad09ea01cc040a573543ce8f29ad27e64736f6c634300081a0033",mf={},Tf={},Q={_format:pf,contractName:yf,sourceName:rf,abi:uf,bytecode:of,deployedBytecode:lf,linkReferences:mf,deployedLinkReferences:Tf},vf="hh-sol-artifact-1",wf="VestingBudget",Mf="contracts/budgets/VestingBudget.sol",If=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],hf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612fc0806100bd5f395ff3fe608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",Af="0x608060405260043610610207575f3560e01c8063578bcf3511610117578063d2514e841161009f578063f04e283e1161006e578063f04e283e14610767578063f2fde38b14610783578063fa4ca9b11461079f578063fe9fbb80146107db578063fee81cf4146108175761020e565b8063d2514e84146106af578063dcc21361146106eb578063ec87621c14610713578063efbe1c1c1461073d5761020e565b806375b238fc116100e657806375b238fc146105cc5780638da5cb5b146105f6578063b300579314610620578063be4994f81461065d578063be9a6555146106855761020e565b8063578bcf351461051a5780635aef467a1461055657806361400c9914610586578063715018a6146105c25761020e565b806328d6183b1161019a578063451cc19111610169578063451cc19114610440578063474f5a441461047c5780634a4ee7b1146104b8578063514e62fc146104d457806354d1f13d146105105761020e565b806328d6183b1461038a5780632de94807146103b45780634359d28a146103f0578063439fab91146104185761020e565b8063183a4f6e116101d6578063183a4f6e1461030c5780631c10893f146103285780631cd64df41461034457806325692962146103805761020e565b806301ffc9a7146102405780630fb5a6b41461027c57806310098ad5146102a657806313d033c0146102e25761020e565b3661020e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561024b575f80fd5b5061026660048036038101906102619190611fe9565b610853565b604051610273919061202e565b60405180910390f35b348015610287575f80fd5b506102906108cc565b60405161029d9190612069565b60405180910390f35b3480156102b1575f80fd5b506102cc60048036038101906102c791906120dc565b6108e5565b6040516102d9919061211f565b60405180910390f35b3480156102ed575f80fd5b506102f661093f565b6040516103039190612069565b60405180910390f35b61032660048036038101906103219190612162565b610958565b005b610342600480360381019061033d919061218d565b610965565b005b34801561034f575f80fd5b5061036a6004803603810190610365919061218d565b61097b565b604051610377919061202e565b60405180910390f35b610388610991565b005b348015610395575f80fd5b5061039e6109e2565b6040516103ab91906121da565b60405180910390f35b3480156103bf575f80fd5b506103da60048036038101906103d591906120dc565b610a09565b6040516103e7919061211f565b60405180910390f35b3480156103fb575f80fd5b50610416600480360381019061041191906122a9565b610a22565b005b348015610423575f80fd5b5061043e6004803603810190610439919061237c565b610b30565b005b34801561044b575f80fd5b506104666004803603810190610461919061237c565b610c8e565b604051610473919061211f565b60405180910390f35b348015610487575f80fd5b506104a2600480360381019061049d919061237c565b610c95565b6040516104af919061211f565b60405180910390f35b6104d260048036038101906104cd919061218d565b610d7f565b005b3480156104df575f80fd5b506104fa60048036038101906104f5919061218d565b610d95565b604051610507919061202e565b60405180910390f35b610518610dac565b005b348015610525575f80fd5b50610540600480360381019061053b91906120dc565b610de5565b60405161054d919061211f565b60405180910390f35b610570600480360381019061056b919061237c565b610e2b565b60405161057d919061202e565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a7919061241c565b610ff8565b6040516105b9919061202e565b60405180910390f35b6105ca61105c565b005b3480156105d7575f80fd5b506105e061106f565b6040516105ed919061211f565b60405180910390f35b348015610601575f80fd5b5061060a611074565b6040516106179190612476565b60405180910390f35b34801561062b575f80fd5b506106466004803603810190610641919061248f565b61109c565b604051610654929190612513565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e919061258f565b6111f8565b005b348015610690575f80fd5b506106996112ae565b6040516106a69190612069565b60405180910390f35b3480156106ba575f80fd5b506106d560048036038101906106d091906120dc565b6112c5565b6040516106e2919061211f565b60405180910390f35b3480156106f6575f80fd5b50610711600480360381019061070c919061258f565b61137d565b005b34801561071e575f80fd5b50610727611433565b604051610734919061211f565b60405180910390f35b348015610748575f80fd5b50610751611438565b60405161075e919061211f565b60405180910390f35b610781600480360381019061077c91906120dc565b61147c565b005b61079d600480360381019061079891906120dc565b6114ba565b005b3480156107aa575f80fd5b506107c560048036038101906107c0919061237c565b6114e3565b6040516107d2919061202e565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc91906120dc565b6115e2565b60405161080e919061202e565b60405180910390f35b348015610822575f80fd5b5061083d600480360381019061083891906120dc565b611635565b60405161084a919061211f565b60405180910390f35b5f7f64683da1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108c557506108c48261164e565b5b9050919050565b5f60089054906101000a900467ffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461092e83426116c7565b610938919061263a565b9050919050565b5f60109054906101000a900467ffffffffffffffff1681565b6109623382611789565b50565b61096d611798565b61097782826117cf565b5050565b5f818261098785610a09565b1614905092915050565b5f61099a6117df565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f64683da100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b6002610a2d816117e9565b828290508585905014610a6c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b28575f848483818110610a8d57610a8c61266d565b5b9050602002016020810190610aa291906126c4565b90506001151581151503610ae757610ae2878784818110610ac657610ac561266d565b5b9050602002016020810190610adb91906120dc565b60016117cf565b610b1a565b610b19878784818110610afd57610afc61266d565b5b9050602002016020810190610b1291906120dc565b6001611789565b5b508080600101915050610a6e565b505050505050565b5f610b3961181e565b90508054600382558015610b6b5760018160011c14303b10610b625763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b7c919061290e565b905080604001515f806101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080606001515f60086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080608001515f60106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610c0d815f0151611847565b5f5b816020015151811015610c5257610c4582602001518281518110610c3657610c3561266d565b5b6020026020010151600161191d565b8080600101915050610c0f565b50508015610c89576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f92915050565b5f610c9e611798565b5f8383810190610cae9190612ab9565b90505f806002811115610cc457610cc3612b00565b5b825f01516002811115610cda57610cd9612b00565b5b1480610d0d575060016002811115610cf557610cf4612b00565b5b825f01516002811115610d0b57610d0a612b00565b5b145b15610d69575f8260600151806020019051810190610d2b9190612b7a565b90505f815f015114610d4057805f0151610d4e565b610d4d83602001516108e5565b5b9150610d63836020015184604001518461195e565b50610d73565b8092505050610d79565b80925050505b92915050565b610d87611798565b610d918282611789565b5050565b5f8082610da185610a09565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f808383810190610e3c9190612ab9565b90505f6002811115610e5157610e50612b00565b5b815f01516002811115610e6757610e66612b00565b5b03610edd575f8160600151806020019051810190610e859190612b7a565b9050805f01513414610ed7578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610ece929190612ba5565b60405180910390fd5b50610fec565b60016002811115610ef157610ef0612b00565b5b815f01516002811115610f0757610f06612b00565b5b03610fe2575f8160600151806020019051810190610f259190612b7a565b9050610f5f826040015130835f0151856020015173ffffffffffffffffffffffffffffffffffffffff16611b77909392919063ffffffff16565b805f0151610f9030846020015173ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b1015610fdc578160200151815f01516040517fcece04c5000000000000000000000000000000000000000000000000000000008152600401610fd3929190612ba5565b60405180910390fd5b50610feb565b5f915050610ff2565b5b60019150505b92915050565b5f805f90505b838390508110156110505761103684848381811061101f5761101e61266d565b5b90506020028101906110319190612bd8565b6114e3565b611043575f915050611056565b8080600101915050610ffe565b50600190505b92915050565b611064611798565b61106d5f611c04565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f806110a7336115e2565b6110dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081525090508773ffffffffffffffffffffffffffffffffffffffff1663dd98558c8260405160200161117b9190612ce3565b60405160208183030381529060405287876040518463ffffffff1660e01b81526004016111aa93929190612d4b565b60408051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e99190612d9b565b92509250509550959350505050565b6002611203816117e9565b828290508585905014611242576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112a6576112998686838181106112655761126461266d565b5b905060200201602081019061127a91906120dc565b85858481811061128d5761128c61266d565b5b905060200201356117cf565b8080600101915050611244565b505050505050565b5f8054906101000a900467ffffffffffffffff1681565b5f805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461132857611323308473ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61132a565b475b90508060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113759190612dd9565b915050919050565b6002611388816117e9565b8282905085859050146113c7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561142b5761141e8686838181106113ea576113e961266d565b5b90506020020160208101906113ff91906120dc565b8585848181106114125761141161266d565b5b90506020020135611789565b80806001019150506113c9565b505050505050565b600181565b5f8060089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff1661146d9190612e0c565b67ffffffffffffffff16905090565b611484611798565b63389a75e1600c52805f526020600c2080544211156114aa57636f5e88185f526004601cfd5b5f8155506114b781611c04565b50565b6114c2611798565b8060601b6114d757637448fbae5f526004601cfd5b6114e081611c04565b50565b5f6114ed336115e2565b611523576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906115339190612ab9565b90506001600281111561154957611548612b00565b5b815f0151600281111561155f5761155e612b00565b5b148061159157505f600281111561157957611578612b00565b5b815f0151600281111561158f5761158e612b00565b5b145b156115cd575f81606001518060200190518101906115af9190612b7a565b90506115c782602001518360400151835f015161195e565b506115d6565b5f9150506115dc565b60019150505b92915050565b5f8173ffffffffffffffffffffffffffffffffffffffff16611602611074565b73ffffffffffffffffffffffffffffffffffffffff16148061162e575061162d826002600117610d95565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fe49cedd7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116c057506116bf82611cca565b5b9050919050565b5f805f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461172a57611725308573ffffffffffffffffffffffffffffffffffffffff16611bd190919063ffffffff16565b61172c565b475b905061178060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548261177a9190612dd9565b84611d43565b91505092915050565b61179482825f611e58565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146117cd576382b429005f526004601cfd5b565b6117db82826001611e58565b5050565b5f6202a300905090565b638b78c6d81954331461181b57638b78c6d8600c52335f52806020600c20541661181a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61184f611eb0565b156118c7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561188957630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061191a565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361197c5763ab143c065f526004601cfd5b3068929eee149b4bd21268555f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fc578282826040517fbf182be80000000000000000000000000000000000000000000000000000000081526004016119f393929190612e47565b60405180910390fd5b611a05836108e5565b811115611a555782611a16846108e5565b826040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401611a4c93929190612e7c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611aa19190612dd9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611aea57611ae58282611eb4565b611b16565b611b1582828573ffffffffffffffffffffffffffffffffffffffff16611ed19092919063ffffffff16565b5b8273ffffffffffffffffffffffffffffffffffffffff167fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd435428383604051611b5e929190612ba5565b60405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611bc257637939f4245f526004601cfd5b5f606052806040525050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611c0c611eb0565b15611c71577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d3c5750611d3b82611f1a565b5b9050919050565b5f8060109054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611d789190612e0c565b67ffffffffffffffff168267ffffffffffffffff161015611d9b575f9050611e52565b5f60089054906101000a900467ffffffffffffffff165f8054906101000a900467ffffffffffffffff16611dcf9190612e0c565b67ffffffffffffffff168267ffffffffffffffff1610611df157829050611e52565b5f60089054906101000a900467ffffffffffffffff1667ffffffffffffffff165f8054906101000a900467ffffffffffffffff1683611e309190612eb1565b67ffffffffffffffff1684611e459190612eec565b611e4f9190612f5a565b90505b92915050565b638b78c6d8600c52825f526020600c20805483811783611e7a57848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f385f3884865af1611ecd5763b12d13eb5f526004601cfd5b5050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611f11576390b8ec185f526004601cfd5b5f603452505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fc881611f94565b8114611fd2575f80fd5b50565b5f81359050611fe381611fbf565b92915050565b5f60208284031215611ffe57611ffd611f8c565b5b5f61200b84828501611fd5565b91505092915050565b5f8115159050919050565b61202881612014565b82525050565b5f6020820190506120415f83018461201f565b92915050565b5f67ffffffffffffffff82169050919050565b61206381612047565b82525050565b5f60208201905061207c5f83018461205a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120ab82612082565b9050919050565b6120bb816120a1565b81146120c5575f80fd5b50565b5f813590506120d6816120b2565b92915050565b5f602082840312156120f1576120f0611f8c565b5b5f6120fe848285016120c8565b91505092915050565b5f819050919050565b61211981612107565b82525050565b5f6020820190506121325f830184612110565b92915050565b61214181612107565b811461214b575f80fd5b50565b5f8135905061215c81612138565b92915050565b5f6020828403121561217757612176611f8c565b5b5f6121848482850161214e565b91505092915050565b5f80604083850312156121a3576121a2611f8c565b5b5f6121b0858286016120c8565b92505060206121c18582860161214e565b9150509250929050565b6121d481611f94565b82525050565b5f6020820190506121ed5f8301846121cb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612214576122136121f3565b5b8235905067ffffffffffffffff811115612231576122306121f7565b5b60208301915083602082028301111561224d5761224c6121fb565b5b9250929050565b5f8083601f840112612269576122686121f3565b5b8235905067ffffffffffffffff811115612286576122856121f7565b5b6020830191508360208202830111156122a2576122a16121fb565b5b9250929050565b5f805f80604085870312156122c1576122c0611f8c565b5b5f85013567ffffffffffffffff8111156122de576122dd611f90565b5b6122ea878288016121ff565b9450945050602085013567ffffffffffffffff81111561230d5761230c611f90565b5b61231987828801612254565b925092505092959194509250565b5f8083601f84011261233c5761233b6121f3565b5b8235905067ffffffffffffffff811115612359576123586121f7565b5b602083019150836001820283011115612375576123746121fb565b5b9250929050565b5f806020838503121561239257612391611f8c565b5b5f83013567ffffffffffffffff8111156123af576123ae611f90565b5b6123bb85828601612327565b92509250509250929050565b5f8083601f8401126123dc576123db6121f3565b5b8235905067ffffffffffffffff8111156123f9576123f86121f7565b5b602083019150836020820283011115612415576124146121fb565b5b9250929050565b5f806020838503121561243257612431611f8c565b5b5f83013567ffffffffffffffff81111561244f5761244e611f90565b5b61245b858286016123c7565b92509250509250929050565b612470816120a1565b82525050565b5f6020820190506124895f830184612467565b92915050565b5f805f805f608086880312156124a8576124a7611f8c565b5b5f6124b5888289016120c8565b955050602086013567ffffffffffffffff8111156124d6576124d5611f90565b5b6124e288828901612327565b945094505060406124f58882890161214e565b92505060606125068882890161214e565b9150509295509295909350565b5f6040820190506125265f830185612110565b6125336020830184612467565b9392505050565b5f8083601f84011261254f5761254e6121f3565b5b8235905067ffffffffffffffff81111561256c5761256b6121f7565b5b602083019150836020820283011115612588576125876121fb565b5b9250929050565b5f805f80604085870312156125a7576125a6611f8c565b5b5f85013567ffffffffffffffff8111156125c4576125c3611f90565b5b6125d0878288016121ff565b9450945050602085013567ffffffffffffffff8111156125f3576125f2611f90565b5b6125ff8782880161253a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61264482612107565b915061264f83612107565b92508282039050818111156126675761266661260d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6126a381612014565b81146126ad575f80fd5b50565b5f813590506126be8161269a565b92915050565b5f602082840312156126d9576126d8611f8c565b5b5f6126e6848285016126b0565b91505092915050565b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612739826126f3565b810181811067ffffffffffffffff8211171561275857612757612703565b5b80604052505050565b5f61276a611f83565b90506127768282612730565b919050565b5f80fd5b5f67ffffffffffffffff82111561279957612798612703565b5b602082029050602081019050919050565b5f6127bc6127b78461277f565b612761565b905080838252602082019050602084028301858111156127df576127de6121fb565b5b835b8181101561280857806127f488826120c8565b8452602084019350506020810190506127e1565b5050509392505050565b5f82601f830112612826576128256121f3565b5b81356128368482602086016127aa565b91505092915050565b61284881612047565b8114612852575f80fd5b50565b5f813590506128638161283f565b92915050565b5f60a0828403121561287e5761287d6126ef565b5b61288860a0612761565b90505f612897848285016120c8565b5f83015250602082013567ffffffffffffffff8111156128ba576128b961277b565b5b6128c684828501612812565b60208301525060406128da84828501612855565b60408301525060606128ee84828501612855565b606083015250608061290284828501612855565b60808301525092915050565b5f6020828403121561292357612922611f8c565b5b5f82013567ffffffffffffffff8111156129405761293f611f90565b5b61294c84828501612869565b91505092915050565b60038110612961575f80fd5b50565b5f8135905061297281612955565b92915050565b5f80fd5b5f67ffffffffffffffff82111561299657612995612703565b5b61299f826126f3565b9050602081019050919050565b828183375f83830152505050565b5f6129cc6129c78461297c565b612761565b9050828152602081018484840111156129e8576129e7612978565b5b6129f38482856129ac565b509392505050565b5f82601f830112612a0f57612a0e6121f3565b5b8135612a1f8482602086016129ba565b91505092915050565b5f60808284031215612a3d57612a3c6126ef565b5b612a476080612761565b90505f612a5684828501612964565b5f830152506020612a69848285016120c8565b6020830152506040612a7d848285016120c8565b604083015250606082013567ffffffffffffffff811115612aa157612aa061277b565b5b612aad848285016129fb565b60608301525092915050565b5f60208284031215612ace57612acd611f8c565b5b5f82013567ffffffffffffffff811115612aeb57612aea611f90565b5b612af784828501612a28565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050612b3b81612138565b92915050565b5f60208284031215612b5657612b556126ef565b5b612b606020612761565b90505f612b6f84828501612b2d565b5f8301525092915050565b5f60208284031215612b8f57612b8e611f8c565b5b5f612b9c84828501612b41565b91505092915050565b5f604082019050612bb85f830185612467565b612bc56020830184612110565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112612bf457612bf3612bcc565b5b80840192508235915067ffffffffffffffff821115612c1657612c15612bd0565b5b602083019250600182023603831315612c3257612c31612bd4565b5b509250929050565b612c43816120a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612c7b82612c49565b612c858185612c53565b9350612c95818560208601612c63565b612c9e816126f3565b840191505092915050565b5f604083015f830151612cbe5f860182612c3a565b5060208301518482036020860152612cd68282612c71565b9150508091505092915050565b5f6020820190508181035f830152612cfb8184612ca9565b905092915050565b5f82825260208201905092915050565b5f612d1d82612c49565b612d278185612d03565b9350612d37818560208601612c63565b612d40816126f3565b840191505092915050565b5f6060820190508181035f830152612d638186612d13565b9050612d726020830185612110565b612d7f6040830184612110565b949350505050565b5f81519050612d95816120b2565b92915050565b5f8060408385031215612db157612db0611f8c565b5b5f612dbe85828601612b2d565b9250506020612dcf85828601612d87565b9150509250929050565b5f612de382612107565b9150612dee83612107565b9250828201905080821115612e0657612e0561260d565b5b92915050565b5f612e1682612047565b9150612e2183612047565b9250828201905067ffffffffffffffff811115612e4157612e4061260d565b5b92915050565b5f606082019050612e5a5f830186612467565b612e676020830185612467565b612e746040830184612110565b949350505050565b5f606082019050612e8f5f830186612467565b612e9c6020830185612110565b612ea96040830184612110565b949350505050565b5f612ebb82612047565b9150612ec683612047565b9250828203905067ffffffffffffffff811115612ee657612ee561260d565b5b92915050565b5f612ef682612107565b9150612f0183612107565b9250828202612f0f81612107565b91508282048414831517612f2657612f2561260d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f6482612107565b9150612f6f83612107565b925082612f7f57612f7e612f2d565b5b82820490509291505056fea26469706673582212206cbc007ff6066145a580b9f8369aba6cd0db2b7642625a935a7ccb6d4300add564736f6c634300081a0033",gf={},Rf={},Y={_format:vf,contractName:wf,sourceName:Mf,abi:If,bytecode:hf,deployedBytecode:Af,linkReferences:gf,deployedLinkReferences:Rf},Of="hh-sol-artifact-1",xf="AllowListIncentive",Cf="contracts/incentives/AllowListIncentive.sol",_f=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61180b806100bd5f395ff3fe608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Nf="0x608060405260043610610129575f3560e01c8063715018a6116100aa578063c884ef831161006e578063c884ef831461038a578063db09da12146103c6578063dcc59b6f14610402578063f04e283e1461042c578063f2fde38b14610448578063fee81cf41461046457610129565b8063715018a6146102c657806387b9d25c146102d05780638da5cb5b146102fa578063a4d66daf14610324578063bb1757cf1461034e57610129565b806338d52e0f116100f157806338d52e0f146101f1578063439fab911461021b578063474f5a44146102435780634e7165a21461028057806354d1f13d146102bc57610129565b806301ffc9a71461012d57806307621eca14610169578063228cb7331461019357806325692962146101bd57806328d6183b146101c7575b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e9190610ffc565b6104a0565b6040516101609190611041565b60405180910390f35b348015610174575f80fd5b5061017d610519565b60405161018a9190611072565b60405180910390f35b34801561019e575f80fd5b506101a7610521565b6040516101b49190611072565b60405180910390f35b6101c5610526565b005b3480156101d2575f80fd5b506101db610577565b6040516101e8919061109a565b60405180910390f35b3480156101fc575f80fd5b5061020561059e565b60405161021291906110f2565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c919061116c565b6105b9565b005b34801561024e575f80fd5b506102696004803603810190610264919061116c565b610699565b6040516102779291906111b7565b60405180910390f35b34801561028b575f80fd5b506102a660048036038101906102a1919061116c565b6106cd565b6040516102b3919061124e565b60405180910390f35b6102c4610724565b005b6102ce61075d565b005b3480156102db575f80fd5b506102e4610770565b6040516102f191906112c9565b60405180910390f35b348015610305575f80fd5b5061030e610795565b60405161031b91906110f2565b60405180910390f35b34801561032f575f80fd5b506103386107bd565b6040516103459190611072565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f919061130c565b6107c3565b6040516103819190611041565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190611369565b610969565b6040516103bd9190611041565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e7919061130c565b610986565b6040516103f99190611041565b60405180910390f35b34801561040d575f80fd5b50610416610a8c565b6040516104239190611072565b60405180910390f35b61044660048036038101906104419190611369565b610a92565b005b610462600480360381019061045d9190611369565b610ad0565b005b34801561046f575f80fd5b5061048a60048036038101906104859190611369565b610af9565b6040516104979190611072565b60405180910390f35b5f7fc2c281ec000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610512575061051182610b12565b5b9050919050565b5f8054905090565b5f5481565b5f61052f610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc2c281ec00000000000000000000000000000000000000000000000000000000905090565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6105c2610b95565b905080546003825580156105f45760018160011c14303b106105eb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f838381019061060591906114c2565b905061061033610bbe565b805f015160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060200151600281905550508015610694576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60605f67ffffffffffffffff8111156106e9576106e8611398565b5b6040519080825280601f01601f19166020018201604052801561071b5781602001600182028036833780820191505090505b50905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610765610c94565b61076e5f610ccb565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f6107cc610c94565b60025460045f8154809291906107e19061151a565b91905055101580610838575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561086f576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f806108cf86610d91565b9150915060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633abb060483836040518363ffffffff1660e01b815260040161092f9291906116cf565b5f604051808303815f87803b158015610946575f80fd5b505af1158015610958573d5f803e3d5ffd5b505050506001925050509392505050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f6002546004541080156109e1575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610a83575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e3f756de856040518263ffffffff1660e01b8152600401610a429190611727565b602060405180830381865afa158015610a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a81919061177d565b155b90509392505050565b60045481565b610a9a610c94565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610ccb565b50565b610ad8610c94565b8060601b610aed57637448fbae5f526004601cfd5b610af681610ccb565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610eb0565b5b9050919050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bc6610f29565b15610c3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c0057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c91565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610cc9576382b429005f526004601cfd5b565b610cd3610f29565b15610d38577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610d8e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060805f600167ffffffffffffffff811115610db057610daf611398565b5b604051908082528060200260200182016040528015610dde5781602001602082028036833780820191505090505b5090505f600167ffffffffffffffff811115610dfd57610dfc611398565b5b604051908082528060200260200182016040528015610e2b5781602001602082028036833780820191505090505b50905084825f81518110610e4257610e416117a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610e9157610e906117a8565b5b6020026020010190151590811515815250508181935093505050915091565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610f225750610f2182610f2d565b5b9050919050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b610fdb81610fa7565b8114610fe5575f80fd5b50565b5f81359050610ff681610fd2565b92915050565b5f6020828403121561101157611010610f9f565b5b5f61101e84828501610fe8565b91505092915050565b5f8115159050919050565b61103b81611027565b82525050565b5f6020820190506110545f830184611032565b92915050565b5f819050919050565b61106c8161105a565b82525050565b5f6020820190506110855f830184611063565b92915050565b61109481610fa7565b82525050565b5f6020820190506110ad5f83018461108b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110dc826110b3565b9050919050565b6110ec816110d2565b82525050565b5f6020820190506111055f8301846110e3565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261112c5761112b61110b565b5b8235905067ffffffffffffffff8111156111495761114861110f565b5b60208301915083600182028301111561116557611164611113565b5b9250929050565b5f806020838503121561118257611181610f9f565b5b5f83013567ffffffffffffffff81111561119f5761119e610fa3565b5b6111ab85828601611117565b92509250509250929050565b5f6040820190506111ca5f830185611063565b6111d760208301846110e3565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611220826111de565b61122a81856111e8565b935061123a8185602086016111f8565b61124381611206565b840191505092915050565b5f6020820190508181035f8301526112668184611216565b905092915050565b5f819050919050565b5f61129161128c611287846110b3565b61126e565b6110b3565b9050919050565b5f6112a282611277565b9050919050565b5f6112b382611298565b9050919050565b6112c3816112a9565b82525050565b5f6020820190506112dc5f8301846112ba565b92915050565b6112eb816110d2565b81146112f5575f80fd5b50565b5f81359050611306816112e2565b92915050565b5f805f6040848603121561132357611322610f9f565b5b5f611330868287016112f8565b935050602084013567ffffffffffffffff81111561135157611350610fa3565b5b61135d86828701611117565b92509250509250925092565b5f6020828403121561137e5761137d610f9f565b5b5f61138b848285016112f8565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6113ce82611206565b810181811067ffffffffffffffff821117156113ed576113ec611398565b5b80604052505050565b5f6113ff610f96565b905061140b82826113c5565b919050565b5f61141a826110d2565b9050919050565b61142a81611410565b8114611434575f80fd5b50565b5f8135905061144581611421565b92915050565b6114548161105a565b811461145e575f80fd5b50565b5f8135905061146f8161144b565b92915050565b5f6040828403121561148a57611489611394565b5b61149460406113f6565b90505f6114a384828501611437565b5f8301525060206114b684828501611461565b60208301525092915050565b5f604082840312156114d7576114d6610f9f565b5b5f6114e484828501611475565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6115248261105a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611556576115556114ed565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611593816110d2565b82525050565b5f6115a4838361158a565b60208301905092915050565b5f602082019050919050565b5f6115c682611561565b6115d0818561156b565b93506115db8361157b565b805f5b8381101561160b5781516115f28882611599565b97506115fd836115b0565b9250506001810190506115de565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61164a81611027565b82525050565b5f61165b8383611641565b60208301905092915050565b5f602082019050919050565b5f61167d82611618565b6116878185611622565b935061169283611632565b805f5b838110156116c25781516116a98882611650565b97506116b483611667565b925050600181019050611695565b5085935050505092915050565b5f6040820190508181035f8301526116e781856115bc565b905081810360208301526116fb8184611673565b90509392505050565b50565b5f6117125f836111e8565b915061171d82611704565b5f82019050919050565b5f60408201905061173a5f8301846110e3565b818103602083015261174b81611707565b905092915050565b61175c81611027565b8114611766575f80fd5b50565b5f8151905061177781611753565b92915050565b5f6020828403121561179257611791610f9f565b5b5f61179f84828501611769565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220935f4f4158c09791d7426626cfe654f31510f1ebb6755c8cb47532588b8661bf64736f6c634300081a0033",Ef={},$f={},J={_format:Of,contractName:xf,sourceName:Cf,abi:_f,bytecode:zf,deployedBytecode:Nf,linkReferences:Ef,deployedLinkReferences:$f},kf="hh-sol-artifact-1",Lf="CGDAIncentive",Hf="contracts/incentives/CGDAIncentive.sol",Df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Bf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612848806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Sf="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063c884ef831161009f578063ec87621c1161006e578063ec87621c1461069d578063f04e283e146106c7578063f2fde38b146106e3578063fe9fbb80146106ff578063fee81cf41461073b576101ed565b8063c884ef83146105d3578063db09da121461060f578063dcc213611461064b578063dcc59b6f14610673576101ed565b80638da5cb5b116100db5780638da5cb5b1461051b578063bb1757cf14610545578063be4994f814610581578063c78da39a146105a9576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c457806375ef18d0146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190611a9f565b610777565b6040516102249190611ae4565b60405180910390f35b348015610238575f80fd5b506102416107f0565b60405161024e9190611b15565b60405180910390f35b610271600480360381019061026c9190611b58565b610899565b005b61028d60048036038101906102889190611bdd565b6108a6565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611bdd565b6108bc565b6040516102c29190611ae4565b60405180910390f35b3480156102d6575f80fd5b506102df6108d2565b6040516102ec9190611b15565b60405180910390f35b6102fd6108d7565b005b34801561030a575f80fd5b50610313610928565b6040516103209190611c2a565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611c43565b61094f565b60405161035c9190611b15565b60405180910390f35b348015610370575f80fd5b50610379610968565b6040516103869190611c7d565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611d4c565b61098d565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611e1f565b610a9b565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611e1f565b610d35565b604051610413929190611e6a565b60405180910390f35b61043660048036038101906104319190611bdd565b610e87565b005b348015610443575f80fd5b5061045e60048036038101906104599190611e1f565b610e9d565b60405161046b9190611f01565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611bdd565b610f6d565b6040516104a79190611ae4565b60405180910390f35b6104b8610f84565b005b6104c2610fbd565b005b3480156104cf575f80fd5b506104d8610fd0565b6040516104e59190611b15565b60405180910390f35b3480156104f9575f80fd5b50610502610fd5565b6040516105129493929190611f21565b60405180910390f35b348015610526575f80fd5b5061052f610ff2565b60405161053c9190611c7d565b60405180910390f35b348015610550575f80fd5b5061056b60048036038101906105669190611f64565b61101a565b6040516105789190611ae4565b60405180910390f35b34801561058c575f80fd5b506105a760048036038101906105a29190612016565b611205565b005b3480156105b4575f80fd5b506105bd6112bb565b6040516105ca9190611b15565b60405180910390f35b3480156105de575f80fd5b506105f960048036038101906105f49190611c43565b6112c1565b6040516106069190611ae4565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190611f64565b6112de565b6040516106429190611ae4565b60405180910390f35b348015610656575f80fd5b50610671600480360381019061066c9190612016565b6112f1565b005b34801561067e575f80fd5b506106876113a7565b6040516106949190611b15565b60405180910390f35b3480156106a8575f80fd5b506106b16113ad565b6040516106be9190611b15565b60405180910390f35b6106e160048036038101906106dc9190611c43565b6113b2565b005b6106fd60048036038101906106f89190611c43565b6113f0565b005b34801561070a575f80fd5b5061072560048036038101906107209190611c43565b611419565b6040516107329190611ae4565b60405180910390f35b348015610746575f80fd5b50610761600480360381019061075c9190611c43565b61146c565b60405161076e9190611b15565b60405180910390f35b5f7f53cf8555000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e957506107e882611485565b5b9050919050565b5f8060028001544261080291906120c1565b90505f61084f3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90505f610e106002600101548461086691906120f4565b6108709190612162565b6002600301546108809190612192565b905081811161088f5780610891565b815b935050505090565b6108a33382611531565b50565b6108ae611540565b6108b88282611577565b5050565b5f81826108c88561094f565b1614905092915050565b5f5481565b5f6108e0611587565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f53cf855500000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600261099881611591565b8282905085859050146109d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610a93575f8484838181106109f8576109f76121c5565b5b9050602002016020810190610a0d919061221c565b90506001151581151503610a5257610a4d878784818110610a3157610a306121c5565b5b9050602002016020810190610a469190611c43565b6001611577565b610a85565b610a84878784818110610a6857610a676121c5565b5b9050602002016020810190610a7d9190611c43565b6001611531565b5b5080806001019150506109d9565b505050505050565b5f610aa46115c6565b90508054600382558015610ad65760018160011c14303b10610acd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ae79190612350565b90505f610b1630835f015173ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b90508160800151811015610b6c57815f01518183608001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b639392919061237b565b60405180910390fd5b5f82602001511480610b8157505f8260400151145b80610b8f57505f8260600151145b80610ba1575081602001518260800151105b15610bd8576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f015160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180608001604052808360400151815260200183606001518152602001428152602001836020015181525060025f820151815f01556020820151816001015560408201518160020155606082015181600301559050508160800151600681905550610c87336115ef565b610c923360016116c5565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610cf19493929190611f21565b60405180910390a250508015610d30576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610d4281611706565b5f8585810190610d5291906124c9565b90505f8160200151806020019051810190610d6d9190612524565b9050610dbe825f01518260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610e32939291906125b4565b604051602081830303815290604052604051610e4e9190611f01565b60405180910390a28060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610e8f611540565b610e998282611531565b5050565b60605f8383810190610eaf9190612350565b9050604051806080016040528060016002811115610ed057610ecf6125f0565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610f339190612646565b604051602081830303815290604052815250604051602001610f55919061275c565b60405160208183030381529060405291505092915050565b5f8082610f798561094f565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610fc5611540565b610fce5f611776565b565b600281565b6002805f0154908060010154908060020154908060030154905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b5f611023611540565b61102c8461183c565b61106d57836040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401611064919061279f565b60405180910390fd5b6001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060085f8154809291906110d3906127cb565b91905055505f6110e16107f0565b905042600280018190555060025f015481116111015760025f0154611112565b60025f01548161111191906120c1565b5b600260030181905550611167858260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172d9092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687846040516020016111d5939291906125b4565b6040516020818303038152906040526040516111f19190611f01565b60405180910390a260019150509392505050565b600261121081611591565b82829050858590501461124f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156112b3576112a6868683818110611272576112716121c5565b5b90506020020160208101906112879190611c43565b85858481811061129a576112996121c5565b5b90506020020135611577565b8080600101915050611251565b505050505050565b60065481565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f6112e88461183c565b90509392505050565b60026112fc81611591565b82829050858590501461133b576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561139f5761139286868381811061135e5761135d6121c5565b5b90506020020160208101906113739190611c43565b858584818110611386576113856121c5565b5b90506020020135611531565b808060010191505061133d565b505050505050565b60085481565b600181565b6113ba611540565b63389a75e1600c52805f526020600c2080544211156113e057636f5e88185f526004601cfd5b5f8155506113ed81611776565b50565b6113f8611540565b8060601b61140d57637448fbae5f526004601cfd5b61141681611776565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff16611439610ff2565b73ffffffffffffffffffffffffffffffffffffffff1614806114655750611464826002600117610f6d565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806114f757506114f6826118fb565b5b9050919050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61153c82825f611974565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611575576382b429005f526004601cfd5b565b61158382826001611974565b5050565b5f6202a300905090565b638b78c6d8195433146115c357638b78c6d8600c52335f52806020600c2054166115c2576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6115f76119cc565b1561166f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561163157630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506116c2565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661172a576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661176d576390b8ec185f526004601cfd5b5f603452505050565b61177e6119cc565b156117e3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611839565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f806118466107f0565b90505f811180156118a057508061189d3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114fe90919063ffffffff16565b10155b80156118f3575060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b915050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061196d575061196c826119d0565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361199657848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611a7e81611a4a565b8114611a88575f80fd5b50565b5f81359050611a9981611a75565b92915050565b5f60208284031215611ab457611ab3611a42565b5b5f611ac184828501611a8b565b91505092915050565b5f8115159050919050565b611ade81611aca565b82525050565b5f602082019050611af75f830184611ad5565b92915050565b5f819050919050565b611b0f81611afd565b82525050565b5f602082019050611b285f830184611b06565b92915050565b611b3781611afd565b8114611b41575f80fd5b50565b5f81359050611b5281611b2e565b92915050565b5f60208284031215611b6d57611b6c611a42565b5b5f611b7a84828501611b44565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bac82611b83565b9050919050565b611bbc81611ba2565b8114611bc6575f80fd5b50565b5f81359050611bd781611bb3565b92915050565b5f8060408385031215611bf357611bf2611a42565b5b5f611c0085828601611bc9565b9250506020611c1185828601611b44565b9150509250929050565b611c2481611a4a565b82525050565b5f602082019050611c3d5f830184611c1b565b92915050565b5f60208284031215611c5857611c57611a42565b5b5f611c6584828501611bc9565b91505092915050565b611c7781611ba2565b82525050565b5f602082019050611c905f830184611c6e565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611cb757611cb6611c96565b5b8235905067ffffffffffffffff811115611cd457611cd3611c9a565b5b602083019150836020820283011115611cf057611cef611c9e565b5b9250929050565b5f8083601f840112611d0c57611d0b611c96565b5b8235905067ffffffffffffffff811115611d2957611d28611c9a565b5b602083019150836020820283011115611d4557611d44611c9e565b5b9250929050565b5f805f8060408587031215611d6457611d63611a42565b5b5f85013567ffffffffffffffff811115611d8157611d80611a46565b5b611d8d87828801611ca2565b9450945050602085013567ffffffffffffffff811115611db057611daf611a46565b5b611dbc87828801611cf7565b925092505092959194509250565b5f8083601f840112611ddf57611dde611c96565b5b8235905067ffffffffffffffff811115611dfc57611dfb611c9a565b5b602083019150836001820283011115611e1857611e17611c9e565b5b9250929050565b5f8060208385031215611e3557611e34611a42565b5b5f83013567ffffffffffffffff811115611e5257611e51611a46565b5b611e5e85828601611dca565b92509250509250929050565b5f604082019050611e7d5f830185611b06565b611e8a6020830184611c6e565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611ed382611e91565b611edd8185611e9b565b9350611eed818560208601611eab565b611ef681611eb9565b840191505092915050565b5f6020820190508181035f830152611f198184611ec9565b905092915050565b5f608082019050611f345f830187611b06565b611f416020830186611b06565b611f4e6040830185611b06565b611f5b6060830184611b06565b95945050505050565b5f805f60408486031215611f7b57611f7a611a42565b5b5f611f8886828701611bc9565b935050602084013567ffffffffffffffff811115611fa957611fa8611a46565b5b611fb586828701611dca565b92509250509250925092565b5f8083601f840112611fd657611fd5611c96565b5b8235905067ffffffffffffffff811115611ff357611ff2611c9a565b5b60208301915083602082028301111561200f5761200e611c9e565b5b9250929050565b5f805f806040858703121561202e5761202d611a42565b5b5f85013567ffffffffffffffff81111561204b5761204a611a46565b5b61205787828801611ca2565b9450945050602085013567ffffffffffffffff81111561207a57612079611a46565b5b61208687828801611fc1565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120cb82611afd565b91506120d683611afd565b92508282039050818111156120ee576120ed612094565b5b92915050565b5f6120fe82611afd565b915061210983611afd565b925082820261211781611afd565b9150828204841483151761212e5761212d612094565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61216c82611afd565b915061217783611afd565b92508261218757612186612135565b5b828204905092915050565b5f61219c82611afd565b91506121a783611afd565b92508282019050808211156121bf576121be612094565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6121fb81611aca565b8114612205575f80fd5b50565b5f81359050612216816121f2565b92915050565b5f6020828403121561223157612230611a42565b5b5f61223e84828501612208565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228182611eb9565b810181811067ffffffffffffffff821117156122a05761229f61224b565b5b80604052505050565b5f6122b2611a39565b90506122be8282612278565b919050565b5f80fd5b5f60a082840312156122dc576122db612247565b5b6122e660a06122a9565b90505f6122f584828501611bc9565b5f83015250602061230884828501611b44565b602083015250604061231c84828501611b44565b604083015250606061233084828501611b44565b606083015250608061234484828501611b44565b60808301525092915050565b5f60a0828403121561236557612364611a42565b5b5f612372848285016122c7565b91505092915050565b5f60608201905061238e5f830186611c6e565b61239b6020830185611b06565b6123a86040830184611b06565b949350505050565b5f80fd5b5f67ffffffffffffffff8211156123ce576123cd61224b565b5b6123d782611eb9565b9050602081019050919050565b828183375f83830152505050565b5f6124046123ff846123b4565b6122a9565b9050828152602081018484840111156124205761241f6123b0565b5b61242b8482856123e4565b509392505050565b5f82601f83011261244757612446611c96565b5b81356124578482602086016123f2565b91505092915050565b5f6040828403121561247557612474612247565b5b61247f60406122a9565b90505f61248e84828501611bc9565b5f83015250602082013567ffffffffffffffff8111156124b1576124b06122c3565b5b6124bd84828501612433565b60208301525092915050565b5f602082840312156124de576124dd611a42565b5b5f82013567ffffffffffffffff8111156124fb576124fa611a46565b5b61250784828501612460565b91505092915050565b5f8151905061251e81611b2e565b92915050565b5f6020828403121561253957612538611a42565b5b5f61254684828501612510565b91505092915050565b5f8160601b9050919050565b5f6125658261254f565b9050919050565b5f6125768261255b565b9050919050565b61258e61258982611ba2565b61256c565b82525050565b5f819050919050565b6125ae6125a982611afd565b612594565b82525050565b5f6125bf828661257d565b6014820191506125cf828561257d565b6014820191506125df828461259d565b602082019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b61262681611afd565b82525050565b602082015f8201516126405f85018261261d565b50505050565b5f6020820190506126595f83018461262c565b92915050565b600381106126705761266f6125f0565b5b50565b5f8190506126808261265f565b919050565b5f61268f82612673565b9050919050565b61269f81612685565b82525050565b6126ae81611ba2565b82525050565b5f82825260208201905092915050565b5f6126ce82611e91565b6126d881856126b4565b93506126e8818560208601611eab565b6126f181611eb9565b840191505092915050565b5f608083015f8301516127115f860182612696565b50602083015161272460208601826126a5565b50604083015161273760408601826126a5565b506060830151848203606086015261274f82826126c4565b9150508091505092915050565b5f6020820190508181035f83015261277481846126fc565b905092915050565b50565b5f61278a5f83611e9b565b91506127958261277c565b5f82019050919050565b5f6040820190506127b25f830184611c6e565b81810360208301526127c38161277f565b905092915050565b5f6127d582611afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361280757612806612094565b5b60018201905091905056fea2646970667358221220f53feea738e51a4389a3e73f1d1445615cf19b70818832070235b4e4358c768664736f6c634300081a0033",Vf={},qf={},X={_format:kf,contractName:Lf,sourceName:Hf,abi:Df,bytecode:Bf,deployedBytecode:Sf,linkReferences:Vf,deployedLinkReferences:qf},Ff="hh-sol-artifact-1",Uf="ERC20Incentive",Pf="contracts/incentives/ERC20Incentive.sol",Gf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Zf="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d51806100bd5f395ff3fe608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",Wf="0x608060405260043610610203575f3560e01c806354d1f13d11610117578063c884ef831161009f578063ec87621c1161006e578063ec87621c14610702578063f04e283e1461072c578063f2fde38b14610748578063fe9fbb8014610764578063fee81cf4146107a057610203565b8063c884ef8314610638578063db09da1214610674578063dcc21361146106b0578063dcc59b6f146106d857610203565b8063a4d66daf116100e6578063a4d66daf14610544578063a8c62e761461056e578063b30906d414610598578063bb1757cf146105d4578063be4994f81461061057610203565b806354d1f13d146104dc578063715018a6146104e657806375b238fc146104f05780638da5cb5b1461051a57610203565b806328d6183b1161019a578063439fab9111610169578063439fab91146103e3578063474f5a441461040b5780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057610203565b806328d6183b1461032b5780632de948071461035557806338d52e0f146103915780634359d28a146103bb57610203565b80631cd64df4116101d65780631cd64df4146102a55780632275aea9146102e1578063228cb733146102f7578063256929621461032157610203565b806301ffc9a71461020757806307621eca14610243578063183a4f6e1461026d5780631c10893f14610289575b5f80fd5b348015610212575f80fd5b5061022d60048036038101906102289190611ebd565b6107dc565b60405161023a9190611f02565b60405180910390f35b34801561024e575f80fd5b50610257610855565b6040516102649190611f33565b60405180910390f35b61028760048036038101906102829190611f76565b61085d565b005b6102a3600480360381019061029e9190611ffb565b61086a565b005b3480156102b0575f80fd5b506102cb60048036038101906102c69190611ffb565b610880565b6040516102d89190611f02565b60405180910390f35b3480156102ec575f80fd5b506102f5610896565b005b348015610302575f80fd5b5061030b610a64565b6040516103189190611f33565b60405180910390f35b610329610a69565b005b348015610336575f80fd5b5061033f610aba565b60405161034c9190612048565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612061565b610ae1565b6040516103889190611f33565b60405180910390f35b34801561039c575f80fd5b506103a5610afa565b6040516103b2919061209b565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc919061216a565b610b1f565b005b3480156103ee575f80fd5b506104096004803603810190610404919061223d565b610c2d565b005b348015610416575f80fd5b50610431600480360381019061042c919061223d565b610ed4565b60405161043f929190612288565b60405180910390f35b610462600480360381019061045d9190611ffb565b611171565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061223d565b611187565b604051610497919061231f565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611ffb565b6112a5565b6040516104d39190611f02565b60405180910390f35b6104e46112bc565b005b6104ee6112f5565b005b3480156104fb575f80fd5b50610504611308565b6040516105119190611f33565b60405180910390f35b348015610525575f80fd5b5061052e61130d565b60405161053b919061209b565b60405180910390f35b34801561054f575f80fd5b50610558611335565b6040516105659190611f33565b60405180910390f35b348015610579575f80fd5b5061058261133b565b60405161058f91906123b2565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b99190611f76565b61134d565b6040516105cb919061209b565b60405180910390f35b3480156105df575f80fd5b506105fa60048036038101906105f591906123cb565b611388565b6040516106079190611f02565b60405180910390f35b34801561061b575f80fd5b506106366004803603810190610631919061247d565b611677565b005b348015610643575f80fd5b5061065e60048036038101906106599190612061565b61172d565b60405161066b9190611f02565b60405180910390f35b34801561067f575f80fd5b5061069a600480360381019061069591906123cb565b61174a565b6040516106a79190611f02565b60405180910390f35b3480156106bb575f80fd5b506106d660048036038101906106d1919061247d565b61175d565b005b3480156106e3575f80fd5b506106ec611813565b6040516106f99190611f33565b60405180910390f35b34801561070d575f80fd5b50610716611819565b6040516107239190611f33565b60405180910390f35b61074660048036038101906107419190612061565b61181e565b005b610762600480360381019061075d9190612061565b61185c565b005b34801561076f575f80fd5b5061078a60048036038101906107859190612061565b611885565b6040516107979190611f02565b60405180910390f35b3480156107ab575f80fd5b506107c660048036038101906107c19190612061565b6118d8565b6040516107d39190611f33565b60405180910390f35b5f7f7cc1d5bb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084e575061084d826118f1565b5b9050919050565b5f8054905090565b610867338261196a565b50565b610872611979565b61087c82826119b0565b5050565b5f818261088c85610ae1565b1614905092915050565b60016108a1816119c0565b6001808111156108b4576108b361233f565b5b60025f9054906101000a900460ff1660018111156108d5576108d461233f565b5b1461090c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446109249190612528565b81525090505f6003808054905061093a846119e7565b6109449190612588565b81548110610955576109546125b8565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506109cc815f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f54604051602001610a3b9392919061264a565b604051602081830303815290604052604051610a57919061231f565b60405180910390a2505050565b5f5481565b5f610a72611a3f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f7cc1d5bb00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610b2a81611a49565b828290508585905014610b69576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610c25575f848483818110610b8a57610b896125b8565b5b9050602002016020810190610b9f91906126b0565b90506001151581151503610be457610bdf878784818110610bc357610bc26125b8565b5b9050602002016020810190610bd89190612061565b60016119b0565b610c17565b610c16878784818110610bfa57610bf96125b8565b5b9050602002016020810190610c0f9190612061565b600161196a565b5b508080600101915050610b6b565b505050505050565b5f610c36611a7e565b90508054600382558015610c685760018160011c14303b10610c5f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610c799190612807565b90505f81604001511480610c9057505f8160600151145b15610cc7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600180811115610cdb57610cda61233f565b5b82602001516001811115610cf257610cf161233f565b5b03610d01578160400151610d16565b81606001518260400151610d159190612832565b5b90505f610d4530845f015173ffffffffffffffffffffffffffffffffffffffff16611aa790919063ffffffff16565b905081811015610d9357825f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d8a93929190612873565b60405180910390fd5b825f015160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826020015160025f6101000a81548160ff02191690836001811115610dfe57610dfd61233f565b5b021790555082604001515f819055508260600151600681905550610e2133611ada565b610e3083608001516001611bb0565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e8f94939291906128a8565b60405180910390a25050508015610ecf576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80610ede611979565b5f8484810190610eee9190612a04565b90505f8160200151806020019051810190610f099190612a5f565b9050600180811115610f1e57610f1d61233f565b5b60025f9054906101000a900460ff166001811115610f3f57610f3e61233f565b5b03610fc4575f5481141580610f5557505f600554115b15610fb8573382604051602001610f6c9190612b1b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610faf929190612b3b565b60405180910390fd5b5f60068190555061105a565b5f805482610fd29190612588565b14611035573382604051602001610fe99190612b1b565b6040516020818303038152906040526040517f4139d81d00000000000000000000000000000000000000000000000000000000815260040161102c929190612b3b565b60405180910390fd5b5f54816110429190612b69565b60065f8282546110529190612b99565b925050819055505b6110a9825f01518260045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f01518460405160200161111d9392919061264a565b604051602081830303815290604052604051611139919061231f565b60405180910390a28060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350935050509250929050565b611179611979565b611183828261196a565b5050565b60605f83838101906111999190612807565b90505f6001808111156111af576111ae61233f565b5b826020015160018111156111c6576111c561233f565b5b036111d55781604001516111ea565b816060015182604001516111e99190612832565b5b905060405180608001604052806001600281111561120b5761120a61233f565b5b8152602001835f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808481525060405160200161126a9190612bf5565b60405160208183030381529060405281525060405160200161128c9190612cb4565b6040516020818303038152906040529250505092915050565b5f80826112b185610ae1565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6112fd611979565b6113065f611bf1565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60065481565b60025f9054906101000a900460ff1681565b6003818154811061135c575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611391611979565b61139a84611cb7565b6113d0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60018111156113e3576113e261233f565b5b60025f9054906101000a900460ff1660018111156114045761140361233f565b5b0361155d5760055f81548092919061141b90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506114c1845f5460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119f69092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16865f546040516020016115309392919061264a565b60405160208183030381529060405260405161154c919061231f565b60405180910390a260019050611670565b60055f81548092919061156f90612cd4565b91905055506001805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600384908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff167ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f15360405160405180910390a2600190505b9392505050565b600261168281611a49565b8282905085859050146116c1576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611725576117188686838181106116e4576116e36125b8565b5b90506020020160208101906116f99190612061565b85858481811061170c5761170b6125b8565b5b905060200201356119b0565b80806001019150506116c3565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f61175484611cb7565b90509392505050565b600261176881611a49565b8282905085859050146117a7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561180b576117fe8686838181106117ca576117c96125b8565b5b90506020020160208101906117df9190612061565b8585848181106117f2576117f16125b8565b5b9050602002013561196a565b80806001019150506117a9565b505050505050565b60055481565b600181565b611826611979565b63389a75e1600c52805f526020600c20805442111561184c57636f5e88185f526004601cfd5b5f81555061185981611bf1565b50565b611864611979565b8060601b61187957637448fbae5f526004601cfd5b61188281611bf1565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166118a561130d565b73ffffffffffffffffffffffffffffffffffffffff1614806118d157506118d08260026001176112a5565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611963575061196282611d19565b5b9050919050565b61197582825f611d92565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433146119ae576382b429005f526004601cfd5b565b6119bc82826001611d92565b5050565b638b78c6d8600c52335f52806020600c2054166119e4576382b429005f526004601cfd5b50565b5f602082209050808252919050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611a36576390b8ec185f526004601cfd5b5f603452505050565b5f6202a300905090565b638b78c6d819543314611a7b57638b78c6d8600c52335f52806020600c205416611a7a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b611ae2611dea565b15611b5a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415611b1c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350611bad565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b611bf9611dea565b15611c5e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611cb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d125750600654600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611d8b5750611d8a82611dee565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611db457848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e9c81611e68565b8114611ea6575f80fd5b50565b5f81359050611eb781611e93565b92915050565b5f60208284031215611ed257611ed1611e60565b5b5f611edf84828501611ea9565b91505092915050565b5f8115159050919050565b611efc81611ee8565b82525050565b5f602082019050611f155f830184611ef3565b92915050565b5f819050919050565b611f2d81611f1b565b82525050565b5f602082019050611f465f830184611f24565b92915050565b611f5581611f1b565b8114611f5f575f80fd5b50565b5f81359050611f7081611f4c565b92915050565b5f60208284031215611f8b57611f8a611e60565b5b5f611f9884828501611f62565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fca82611fa1565b9050919050565b611fda81611fc0565b8114611fe4575f80fd5b50565b5f81359050611ff581611fd1565b92915050565b5f806040838503121561201157612010611e60565b5b5f61201e85828601611fe7565b925050602061202f85828601611f62565b9150509250929050565b61204281611e68565b82525050565b5f60208201905061205b5f830184612039565b92915050565b5f6020828403121561207657612075611e60565b5b5f61208384828501611fe7565b91505092915050565b61209581611fc0565b82525050565b5f6020820190506120ae5f83018461208c565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126120d5576120d46120b4565b5b8235905067ffffffffffffffff8111156120f2576120f16120b8565b5b60208301915083602082028301111561210e5761210d6120bc565b5b9250929050565b5f8083601f84011261212a576121296120b4565b5b8235905067ffffffffffffffff811115612147576121466120b8565b5b602083019150836020820283011115612163576121626120bc565b5b9250929050565b5f805f806040858703121561218257612181611e60565b5b5f85013567ffffffffffffffff81111561219f5761219e611e64565b5b6121ab878288016120c0565b9450945050602085013567ffffffffffffffff8111156121ce576121cd611e64565b5b6121da87828801612115565b925092505092959194509250565b5f8083601f8401126121fd576121fc6120b4565b5b8235905067ffffffffffffffff81111561221a576122196120b8565b5b602083019150836001820283011115612236576122356120bc565b5b9250929050565b5f806020838503121561225357612252611e60565b5b5f83013567ffffffffffffffff8111156122705761226f611e64565b5b61227c858286016121e8565b92509250509250929050565b5f60408201905061229b5f830185611f24565b6122a8602083018461208c565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122f1826122af565b6122fb81856122b9565b935061230b8185602086016122c9565b612314816122d7565b840191505092915050565b5f6020820190508181035f83015261233781846122e7565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061237d5761237c61233f565b5b50565b5f81905061238d8261236c565b919050565b5f61239c82612380565b9050919050565b6123ac81612392565b82525050565b5f6020820190506123c55f8301846123a3565b92915050565b5f805f604084860312156123e2576123e1611e60565b5b5f6123ef86828701611fe7565b935050602084013567ffffffffffffffff8111156124105761240f611e64565b5b61241c868287016121e8565b92509250509250925092565b5f8083601f84011261243d5761243c6120b4565b5b8235905067ffffffffffffffff81111561245a576124596120b8565b5b602083019150836020820283011115612476576124756120bc565b5b9250929050565b5f805f806040858703121561249557612494611e60565b5b5f85013567ffffffffffffffff8111156124b2576124b1611e64565b5b6124be878288016120c0565b9450945050602085013567ffffffffffffffff8111156124e1576124e0611e64565b5b6124ed87828801612428565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61253282611f1b565b915061253d83611f1b565b9250828201905080821115612555576125546124fb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61259282611f1b565b915061259d83611f1b565b9250826125ad576125ac61255b565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160601b9050919050565b5f6125fb826125e5565b9050919050565b5f61260c826125f1565b9050919050565b61262461261f82611fc0565b612602565b82525050565b5f819050919050565b61264461263f82611f1b565b61262a565b82525050565b5f6126558286612613565b6014820191506126658285612613565b6014820191506126758284612633565b602082019150819050949350505050565b61268f81611ee8565b8114612699575f80fd5b50565b5f813590506126aa81612686565b92915050565b5f602082840312156126c5576126c4611e60565b5b5f6126d28482850161269c565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612715826122d7565b810181811067ffffffffffffffff82111715612734576127336126df565b5b80604052505050565b5f612746611e57565b9050612752828261270c565b919050565b5f80fd5b60028110612767575f80fd5b50565b5f813590506127788161275b565b92915050565b5f60a08284031215612793576127926126db565b5b61279d60a061273d565b90505f6127ac84828501611fe7565b5f8301525060206127bf8482850161276a565b60208301525060406127d384828501611f62565b60408301525060606127e784828501611f62565b60608301525060806127fb84828501611fe7565b60808301525092915050565b5f60a0828403121561281c5761281b611e60565b5b5f6128298482850161277e565b91505092915050565b5f61283c82611f1b565b915061284783611f1b565b925082820261285581611f1b565b9150828204841483151761286c5761286b6124fb565b5b5092915050565b5f6060820190506128865f83018661208c565b6128936020830185611f24565b6128a06040830184611f24565b949350505050565b5f6080820190506128bb5f8301876123a3565b6128c86020830186611f24565b6128d56040830185611f24565b6128e2606083018461208c565b95945050505050565b5f80fd5b5f67ffffffffffffffff821115612909576129086126df565b5b612912826122d7565b9050602081019050919050565b828183375f83830152505050565b5f61293f61293a846128ef565b61273d565b90508281526020810184848401111561295b5761295a6128eb565b5b61296684828561291f565b509392505050565b5f82601f830112612982576129816120b4565b5b813561299284826020860161292d565b91505092915050565b5f604082840312156129b0576129af6126db565b5b6129ba604061273d565b90505f6129c984828501611fe7565b5f83015250602082013567ffffffffffffffff8111156129ec576129eb612757565b5b6129f88482850161296e565b60208301525092915050565b5f60208284031215612a1957612a18611e60565b5b5f82013567ffffffffffffffff811115612a3657612a35611e64565b5b612a428482850161299b565b91505092915050565b5f81519050612a5981611f4c565b92915050565b5f60208284031215612a7457612a73611e60565b5b5f612a8184828501612a4b565b91505092915050565b612a9381611fc0565b82525050565b5f82825260208201905092915050565b5f612ab3826122af565b612abd8185612a99565b9350612acd8185602086016122c9565b612ad6816122d7565b840191505092915050565b5f604083015f830151612af65f860182612a8a565b5060208301518482036020860152612b0e8282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612b338184612ae1565b905092915050565b5f604082019050612b4e5f83018561208c565b8181036020830152612b6081846122e7565b90509392505050565b5f612b7382611f1b565b9150612b7e83611f1b565b925082612b8e57612b8d61255b565b5b828204905092915050565b5f612ba382611f1b565b9150612bae83611f1b565b9250828203905081811115612bc657612bc56124fb565b5b92915050565b612bd581611f1b565b82525050565b602082015f820151612bef5f850182612bcc565b50505050565b5f602082019050612c085f830184612bdb565b92915050565b60038110612c1f57612c1e61233f565b5b50565b5f819050612c2f82612c0e565b919050565b5f612c3e82612c22565b9050919050565b612c4e81612c34565b82525050565b5f608083015f830151612c695f860182612c45565b506020830151612c7c6020860182612a8a565b506040830151612c8f6040860182612a8a565b5060608301518482036060860152612ca78282612aa9565b9150508091505092915050565b5f6020820190508181035f830152612ccc8184612c54565b905092915050565b5f612cde82611f1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1057612d0f6124fb565b5b60018201905091905056fea2646970667358221220dbd7c777180a7148a52ec8ee9d30a9423dfa9a4d2a856bb6e3d779b3af83a15664736f6c634300081a0033",jf={},Kf={},f0={_format:Ff,contractName:Uf,sourceName:Pf,abi:Gf,bytecode:Zf,deployedBytecode:Wf,linkReferences:jf,deployedLinkReferences:Kf},Qf="hh-sol-artifact-1",Yf="ERC20VariableCriteriaIncentive",Jf="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Xf=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],f5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612d42806100bd5f395ff3fe608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",b5="0x608060405260043610610219575f3560e01c8063715018a611610122578063c884ef83116100aa578063ec87621c1161006e578063ec87621c14610771578063f04e283e1461079b578063f2fde38b146107b7578063fe9fbb80146107d3578063fee81cf41461080f57610219565b8063c884ef831461067d578063d54ad2a1146106b9578063db09da12146106e3578063dcc213611461071f578063dcc59b6f1461074757610219565b8063a4d66daf116100f1578063a4d66daf1461059b578063a871ced2146105c5578063bb1757cf146105ef578063be4994f81461062b578063c213f3f91461065357610219565b8063715018a61461051057806375b238fc1461051a57806377548687146105445780638da5cb5b1461057157610219565b806338d52e0f116101a55780634a4ee7b1116101745780634a4ee7b1146104485780634e7165a214610464578063514e62fc146104a057806354d1f13d146104dc57806366a78e6c146104e657610219565b806338d52e0f146103915780634359d28a146103bb578063439fab91146103e3578063474f5a441461040b57610219565b80631cd64df4116101ec5780631cd64df4146102bb578063228cb733146102f7578063256929621461032157806328d6183b1461032b5780632de948071461035557610219565b806301ffc9a71461021d57806307621eca14610259578063183a4f6e146102835780631c10893f1461029f575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611c95565b61084b565b6040516102509190611cda565b60405180910390f35b348015610264575f80fd5b5061026d6108c4565b60405161027a9190611d0b565b60405180910390f35b61029d60048036038101906102989190611d4e565b6108cc565b005b6102b960048036038101906102b49190611dd3565b6108d9565b005b3480156102c6575f80fd5b506102e160048036038101906102dc9190611dd3565b6108ef565b6040516102ee9190611cda565b60405180910390f35b348015610302575f80fd5b5061030b610905565b6040516103189190611d0b565b60405180910390f35b61032961090a565b005b348015610336575f80fd5b5061033f61095b565b60405161034c9190611e20565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190611e39565b610982565b6040516103889190611d0b565b60405180910390f35b34801561039c575f80fd5b506103a561099b565b6040516103b29190611e73565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190611f42565b6109c0565b005b3480156103ee575f80fd5b5061040960048036038101906104049190612015565b610ace565b005b348015610416575f80fd5b50610431600480360381019061042c9190612015565b610d9c565b60405161043f929190612060565b60405180910390f35b610462600480360381019061045d9190611dd3565b610f06565b005b34801561046f575f80fd5b5061048a60048036038101906104859190612015565b610f1c565b60405161049791906120f7565b60405180910390f35b3480156104ab575f80fd5b506104c660048036038101906104c19190611dd3565b610fea565b6040516104d39190611cda565b60405180910390f35b6104e4611001565b005b3480156104f1575f80fd5b506104fa61103a565b6040516105079190611d0b565b60405180910390f35b610518611040565b005b348015610525575f80fd5b5061052e611053565b60405161053b9190611d0b565b60405180910390f35b34801561054f575f80fd5b50610558611058565b60405161056894939291906121bd565b60405180910390f35b34801561057c575f80fd5b506105856110ad565b6040516105929190611e73565b60405180910390f35b3480156105a6575f80fd5b506105af6110d5565b6040516105bc9190611d0b565b60405180910390f35b3480156105d0575f80fd5b506105d96110db565b6040516105e6919061228f565b60405180910390f35b3480156105fa575f80fd5b50610615600480360381019061061091906122a8565b6111aa565b6040516106229190611cda565b60405180910390f35b348015610636575f80fd5b50610651600480360381019061064c919061235a565b6113d7565b005b34801561065e575f80fd5b5061066761148d565b6040516106749190611d0b565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e9190611e39565b611496565b6040516106b09190611cda565b60405180910390f35b3480156106c4575f80fd5b506106cd6114b3565b6040516106da9190611d0b565b60405180910390f35b3480156106ee575f80fd5b50610709600480360381019061070491906122a8565b6114b9565b6040516107169190611cda565b60405180910390f35b34801561072a575f80fd5b506107456004803603810190610740919061235a565b6114cc565b005b348015610752575f80fd5b5061075b611582565b6040516107689190611d0b565b60405180910390f35b34801561077c575f80fd5b50610785611588565b6040516107929190611d0b565b60405180910390f35b6107b560048036038101906107b09190611e39565b61158d565b005b6107d160048036038101906107cc9190611e39565b6115cb565b005b3480156107de575f80fd5b506107f960048036038101906107f49190611e39565b6115f4565b6040516108069190611cda565b60405180910390f35b34801561081a575f80fd5b5061083560048036038101906108309190611e39565b611647565b6040516108429190611d0b565b60405180910390f35b5f7f52b8e45c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108bd57506108bc82611660565b5b9050919050565b5f8054905090565b6108d633826116d9565b50565b6108e16116e8565b6108eb828261171f565b5050565b5f81826108fb85610982565b1614905092915050565b5f5481565b5f61091361172f565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f52b8e45c00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026109cb81611739565b828290508585905014610a0a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610ac6575f848483818110610a2b57610a2a6123d8565b5b9050602002016020810190610a40919061242f565b90506001151581151503610a8557610a80878784818110610a6457610a636123d8565b5b9050602002016020810190610a799190611e39565b600161171f565b610ab8565b610ab7878784818110610a9b57610a9a6123d8565b5b9050602002016020810190610ab09190611e39565b60016116d9565b5b508080600101915050610a0c565b505050505050565b5f610ad761176e565b90508054600382558015610b095760018160011c14303b10610b005763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610b1a9190612650565b90505f815f015190505f826020015190505f836040015190505f846060015190505f856080015190505f8303610b7c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ba6308773ffffffffffffffffffffffffffffffffffffffff1661179790919063ffffffff16565b905083811015610bf457865f015181856040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610beb9392919061267c565b60405180910390fd5b8560035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845f8190555083600281905550826006819055505f6005819055508160075f820151815f015f6101000a81548160ff02191690836001811115610c7a57610c79612117565b5b0217905550602082015181600101556040820151816002015f6101000a81548160ff021916908360ff16021790555060608201518160020160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610cfc336117ca565b610d073360016118a0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610d5394939291906126b1565b60405180910390a2505050505050508015610d97576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610da9816118e1565b5f8585810190610db9919061280d565b90505f8160200151806020019051810190610dd49190612868565b90508060025f828254610de791906128c0565b92505081905550610e3d825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610eb193929190612958565b604051602081830303815290604052604051610ecd91906120f7565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610f0e6116e8565b610f1882826116d9565b5050565b60605f808484810190610f2f91906129cf565b9250509150604051806080016040528060016002811115610f5357610f52612117565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610faf9190612a48565b604051602081830303815290604052815250604051602001610fd19190612b4f565b6040516020818303038152906040529250505092915050565b5f8082610ff685610982565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b60065481565b6110486116e8565b6110515f611951565b565b600281565b6007805f015f9054906101000a900460ff1690806001015490806002015f9054906101000a900460ff16908060020160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b6110e3611bdd565b60076040518060800160405290815f82015f9054906101000a900460ff16600181111561111357611112612117565b5b600181111561112557611124612117565b5b815260200160018201548152602001600282015f9054906101000a900460ff1660ff1660ff1681526020016002820160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905090565b5f6111b36116e8565b5f83838101906111c39190612bf4565b90505f81602001518060200190518101906111de9190612868565b90505f6111ea87611a17565b611220576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80540361123057819050611253565b670de0b6b3a7640000825f546112469190612c3b565b6112509190612ca9565b90505b5f60065414158015611266575060065481115b156112715760065490505b600254816005546112829190612cd9565b11156112ba576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546112cb9190612cd9565b92505081905550600160045f8282546112e49190612cd9565b92505081905550611337878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119089092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016113a593929190612958565b6040516020818303038152906040526040516113c191906120f7565b60405180910390a2600193505050509392505050565b60026113e281611739565b828290508585905014611421576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561148557611478868683818110611444576114436123d8565b5b90506020020160208101906114599190611e39565b85858481811061146c5761146b6123d8565b5b9050602002013561171f565b8080600101915050611423565b505050505050565b5f600654905090565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6114c384611a17565b90509392505050565b60026114d781611739565b828290508585905014611516576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8585905081101561157a5761156d868683818110611539576115386123d8565b5b905060200201602081019061154e9190611e39565b858584818110611561576115606123d8565b5b905060200201356116d9565b8080600101915050611518565b505050505050565b60045481565b600181565b6115956116e8565b63389a75e1600c52805f526020600c2080544211156115bb57636f5e88185f526004601cfd5b5f8155506115c881611951565b50565b6115d36116e8565b8060601b6115e857637448fbae5f526004601cfd5b6115f181611951565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff166116146110ad565b73ffffffffffffffffffffffffffffffffffffffff161480611640575061163f826002600117610fea565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806116d257506116d182611a26565b5b9050919050565b6116e482825f611a9f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461171d576382b429005f526004601cfd5b565b61172b82826001611a9f565b5050565b5f6202a300905090565b638b78c6d81954331461176b57638b78c6d8600c52335f52806020600c20541661176a576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6117d2611af7565b1561184a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561180c57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061189d565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611905576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611948576390b8ec185f526004601cfd5b5f603452505050565b611959611af7565b156119be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611a14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a985750611a9782611afb565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611ac157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611b6d5750611b6c82611b74565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60405180608001604052805f6001811115611bfb57611bfa612117565b5b81526020015f80191681526020015f60ff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611c7481611c40565b8114611c7e575f80fd5b50565b5f81359050611c8f81611c6b565b92915050565b5f60208284031215611caa57611ca9611c38565b5b5f611cb784828501611c81565b91505092915050565b5f8115159050919050565b611cd481611cc0565b82525050565b5f602082019050611ced5f830184611ccb565b92915050565b5f819050919050565b611d0581611cf3565b82525050565b5f602082019050611d1e5f830184611cfc565b92915050565b611d2d81611cf3565b8114611d37575f80fd5b50565b5f81359050611d4881611d24565b92915050565b5f60208284031215611d6357611d62611c38565b5b5f611d7084828501611d3a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611da282611d79565b9050919050565b611db281611d98565b8114611dbc575f80fd5b50565b5f81359050611dcd81611da9565b92915050565b5f8060408385031215611de957611de8611c38565b5b5f611df685828601611dbf565b9250506020611e0785828601611d3a565b9150509250929050565b611e1a81611c40565b82525050565b5f602082019050611e335f830184611e11565b92915050565b5f60208284031215611e4e57611e4d611c38565b5b5f611e5b84828501611dbf565b91505092915050565b611e6d81611d98565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ead57611eac611e8c565b5b8235905067ffffffffffffffff811115611eca57611ec9611e90565b5b602083019150836020820283011115611ee657611ee5611e94565b5b9250929050565b5f8083601f840112611f0257611f01611e8c565b5b8235905067ffffffffffffffff811115611f1f57611f1e611e90565b5b602083019150836020820283011115611f3b57611f3a611e94565b5b9250929050565b5f805f8060408587031215611f5a57611f59611c38565b5b5f85013567ffffffffffffffff811115611f7757611f76611c3c565b5b611f8387828801611e98565b9450945050602085013567ffffffffffffffff811115611fa657611fa5611c3c565b5b611fb287828801611eed565b925092505092959194509250565b5f8083601f840112611fd557611fd4611e8c565b5b8235905067ffffffffffffffff811115611ff257611ff1611e90565b5b60208301915083600182028301111561200e5761200d611e94565b5b9250929050565b5f806020838503121561202b5761202a611c38565b5b5f83013567ffffffffffffffff81111561204857612047611c3c565b5b61205485828601611fc0565b92509250509250929050565b5f6040820190506120735f830185611cfc565b6120806020830184611e64565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6120c982612087565b6120d38185612091565b93506120e38185602086016120a1565b6120ec816120af565b840191505092915050565b5f6020820190508181035f83015261210f81846120bf565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6002811061215557612154612117565b5b50565b5f81905061216582612144565b919050565b5f61217482612158565b9050919050565b6121848161216a565b82525050565b5f819050919050565b61219c8161218a565b82525050565b5f60ff82169050919050565b6121b7816121a2565b82525050565b5f6080820190506121d05f83018761217b565b6121dd6020830186612193565b6121ea60408301856121ae565b6121f76060830184611e64565b95945050505050565b6122098161216a565b82525050565b6122188161218a565b82525050565b612227816121a2565b82525050565b61223681611d98565b82525050565b608082015f8201516122505f850182612200565b506020820151612263602085018261220f565b506040820151612276604085018261221e565b506060820151612289606085018261222d565b50505050565b5f6080820190506122a25f83018461223c565b92915050565b5f805f604084860312156122bf576122be611c38565b5b5f6122cc86828701611dbf565b935050602084013567ffffffffffffffff8111156122ed576122ec611c3c565b5b6122f986828701611fc0565b92509250509250925092565b5f8083601f84011261231a57612319611e8c565b5b8235905067ffffffffffffffff81111561233757612336611e90565b5b60208301915083602082028301111561235357612352611e94565b5b9250929050565b5f805f806040858703121561237257612371611c38565b5b5f85013567ffffffffffffffff81111561238f5761238e611c3c565b5b61239b87828801611e98565b9450945050602085013567ffffffffffffffff8111156123be576123bd611c3c565b5b6123ca87828801612305565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61240e81611cc0565b8114612418575f80fd5b50565b5f8135905061242981612405565b92915050565b5f6020828403121561244457612443611c38565b5b5f6124518482850161241b565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612494826120af565b810181811067ffffffffffffffff821117156124b3576124b261245e565b5b80604052505050565b5f6124c5611c2f565b90506124d1828261248b565b919050565b5f80fd5b600281106124e6575f80fd5b50565b5f813590506124f7816124da565b92915050565b6125068161218a565b8114612510575f80fd5b50565b5f81359050612521816124fd565b92915050565b612530816121a2565b811461253a575f80fd5b50565b5f8135905061254b81612527565b92915050565b5f608082840312156125665761256561245a565b5b61257060806124bc565b90505f61257f848285016124e9565b5f83015250602061259284828501612513565b60208301525060406125a68482850161253d565b60408301525060606125ba84828501611dbf565b60608301525092915050565b5f61010082840312156125dc576125db61245a565b5b6125e660a06124bc565b90505f6125f584828501611dbf565b5f83015250602061260884828501611d3a565b602083015250604061261c84828501611d3a565b604083015250606061263084828501611d3a565b606083015250608061264484828501612551565b60808301525092915050565b5f610100828403121561266657612665611c38565b5b5f612673848285016125c6565b91505092915050565b5f60608201905061268f5f830186611e64565b61269c6020830185611cfc565b6126a96040830184611cfc565b949350505050565b5f60e0820190506126c45f830187611cfc565b6126d16020830186611cfc565b6126de6040830185611cfc565b6126eb606083018461223c565b95945050505050565b5f80fd5b5f67ffffffffffffffff8211156127125761271161245e565b5b61271b826120af565b9050602081019050919050565b828183375f83830152505050565b5f612748612743846126f8565b6124bc565b905082815260208101848484011115612764576127636126f4565b5b61276f848285612728565b509392505050565b5f82601f83011261278b5761278a611e8c565b5b813561279b848260208601612736565b91505092915050565b5f604082840312156127b9576127b861245a565b5b6127c360406124bc565b90505f6127d284828501611dbf565b5f83015250602082013567ffffffffffffffff8111156127f5576127f46124d6565b5b61280184828501612777565b60208301525092915050565b5f6020828403121561282257612821611c38565b5b5f82013567ffffffffffffffff81111561283f5761283e611c3c565b5b61284b848285016127a4565b91505092915050565b5f8151905061286281611d24565b92915050565b5f6020828403121561287d5761287c611c38565b5b5f61288a84828501612854565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128ca82611cf3565b91506128d583611cf3565b92508282039050818111156128ed576128ec612893565b5b92915050565b5f8160601b9050919050565b5f612909826128f3565b9050919050565b5f61291a826128ff565b9050919050565b61293261292d82611d98565b612910565b82525050565b5f819050919050565b61295261294d82611cf3565b612938565b82525050565b5f6129638286612921565b6014820191506129738285612921565b6014820191506129838284612941565b602082019150819050949350505050565b5f61299e82611d79565b9050919050565b6129ae81612994565b81146129b8575f80fd5b50565b5f813590506129c9816129a5565b92915050565b5f805f606084860312156129e6576129e5611c38565b5b5f6129f3868287016129bb565b9350506020612a0486828701611d3a565b9250506040612a1586828701611d3a565b9150509250925092565b612a2881611cf3565b82525050565b602082015f820151612a425f850182612a1f565b50505050565b5f602082019050612a5b5f830184612a2e565b92915050565b60038110612a7257612a71612117565b5b50565b5f819050612a8282612a61565b919050565b5f612a9182612a75565b9050919050565b612aa181612a87565b82525050565b5f82825260208201905092915050565b5f612ac182612087565b612acb8185612aa7565b9350612adb8185602086016120a1565b612ae4816120af565b840191505092915050565b5f608083015f830151612b045f860182612a98565b506020830151612b17602086018261222d565b506040830151612b2a604086018261222d565b5060608301518482036060860152612b428282612ab7565b9150508091505092915050565b5f6020820190508181035f830152612b678184612aef565b905092915050565b5f60408284031215612b8457612b8361245a565b5b612b8e60406124bc565b90505f82013567ffffffffffffffff811115612bad57612bac6124d6565b5b612bb984828501612777565b5f83015250602082013567ffffffffffffffff811115612bdc57612bdb6124d6565b5b612be884828501612777565b60208301525092915050565b5f60208284031215612c0957612c08611c38565b5b5f82013567ffffffffffffffff811115612c2657612c25611c3c565b5b612c3284828501612b6f565b91505092915050565b5f612c4582611cf3565b9150612c5083611cf3565b9250828202612c5e81611cf3565b91508282048414831517612c7557612c74612893565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612cb382611cf3565b9150612cbe83611cf3565b925082612cce57612ccd612c7c565b5b828204905092915050565b5f612ce382611cf3565b9150612cee83611cf3565b9250828201905080821115612d0657612d05612893565b5b9291505056fea2646970667358221220d4c0d57f1e9fa107af113ee797193e2a4eb6e337829af8477cc95d77b9c8be6864736f6c634300081a0033",e5={},a5={},b0={_format:Qf,contractName:Yf,sourceName:Jf,abi:Xf,bytecode:f5,deployedBytecode:b5,linkReferences:e5,deployedLinkReferences:a5},d5="hh-sol-artifact-1",t5="ERC20VariableIncentive",n5="contracts/incentives/ERC20VariableIncentive.sol",c5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],i5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b612707806100bd5f395ff3fe6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",s5="0x6080604052600436106101ed575f3560e01c806354d1f13d1161010c578063d54ad2a11161009f578063ec87621c1161006e578063ec87621c1461069a578063f04e283e146106c4578063f2fde38b146106e0578063fe9fbb80146106fc578063fee81cf414610738576101ed565b8063d54ad2a1146105e2578063db09da121461060c578063dcc2136114610648578063dcc59b6f14610670576101ed565b8063a4d66daf116100db578063a4d66daf14610518578063bb1757cf14610542578063be4994f81461057e578063c884ef83146105a6576101ed565b806354d1f13d146104b0578063715018a6146104ba57806375b238fc146104c45780638da5cb5b146104ee576101ed565b80632de9480711610184578063474f5a4411610153578063474f5a44146103df5780634a4ee7b11461041c5780634e7165a214610438578063514e62fc14610474576101ed565b80632de948071461032957806338d52e0f146103655780634359d28a1461038f578063439fab91146103b7576101ed565b80631cd64df4116101c05780631cd64df41461028f578063228cb733146102cb57806325692962146102f557806328d6183b146102ff576101ed565b806301ffc9a7146101f157806307621eca1461022d578063183a4f6e146102575780631c10893f14610273575b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906118e1565b610774565b6040516102249190611926565b60405180910390f35b348015610238575f80fd5b506102416107ed565b60405161024e9190611957565b60405180910390f35b610271600480360381019061026c919061199a565b6107f5565b005b61028d60048036038101906102889190611a1f565b610802565b005b34801561029a575f80fd5b506102b560048036038101906102b09190611a1f565b610818565b6040516102c29190611926565b60405180910390f35b3480156102d6575f80fd5b506102df61082e565b6040516102ec9190611957565b60405180910390f35b6102fd610833565b005b34801561030a575f80fd5b50610313610884565b6040516103209190611a6c565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a9190611a85565b6108ab565b60405161035c9190611957565b60405180910390f35b348015610370575f80fd5b506103796108c4565b6040516103869190611abf565b60405180910390f35b34801561039a575f80fd5b506103b560048036038101906103b09190611b8e565b6108e9565b005b3480156103c2575f80fd5b506103dd60048036038101906103d89190611c61565b6109f7565b005b3480156103ea575f80fd5b5061040560048036038101906104009190611c61565b610c04565b604051610413929190611cac565b60405180910390f35b61043660048036038101906104319190611a1f565b610d6e565b005b348015610443575f80fd5b5061045e60048036038101906104599190611c61565b610d84565b60405161046b9190611d43565b60405180910390f35b34801561047f575f80fd5b5061049a60048036038101906104959190611a1f565b610e52565b6040516104a79190611926565b60405180910390f35b6104b8610e69565b005b6104c2610ea2565b005b3480156104cf575f80fd5b506104d8610eb5565b6040516104e59190611957565b60405180910390f35b3480156104f9575f80fd5b50610502610eba565b60405161050f9190611abf565b60405180910390f35b348015610523575f80fd5b5061052c610ee2565b6040516105399190611957565b60405180910390f35b34801561054d575f80fd5b5061056860048036038101906105639190611d63565b610ee8565b6040516105759190611926565b60405180910390f35b348015610589575f80fd5b506105a4600480360381019061059f9190611e15565b6110f7565b005b3480156105b1575f80fd5b506105cc60048036038101906105c79190611a85565b6111ad565b6040516105d99190611926565b60405180910390f35b3480156105ed575f80fd5b506105f66111ca565b6040516106039190611957565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190611d63565b6111d0565b60405161063f9190611926565b60405180910390f35b348015610653575f80fd5b5061066e60048036038101906106699190611e15565b6111e3565b005b34801561067b575f80fd5b50610684611299565b6040516106919190611957565b60405180910390f35b3480156106a5575f80fd5b506106ae61129f565b6040516106bb9190611957565b60405180910390f35b6106de60048036038101906106d99190611a85565b6112a4565b005b6106fa60048036038101906106f59190611a85565b6112e2565b005b348015610707575f80fd5b50610722600480360381019061071d9190611a85565b61130b565b60405161072f9190611926565b60405180910390f35b348015610743575f80fd5b5061075e60048036038101906107599190611a85565b61135e565b60405161076b9190611957565b60405180910390f35b5f7f90318111000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e657506107e582611377565b5b9050919050565b5f8054905090565b6107ff33826113f0565b50565b61080a6113ff565b6108148282611436565b5050565b5f8182610824856108ab565b1614905092915050565b5f5481565b5f61083c611446565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9031811100000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026108f481611450565b828290508585905014610933576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156109ef575f84848381811061095457610953611e93565b5b90506020020160208101906109699190611eea565b905060011515811515036109ae576109a987878481811061098d5761098c611e93565b5b90506020020160208101906109a29190611a85565b6001611436565b6109e1565b6109e08787848181106109c4576109c3611e93565b5b90506020020160208101906109d99190611a85565b60016113f0565b5b508080600101915050610935565b505050505050565b5f610a00611485565b90508054600382558015610a325760018160011c14303b10610a295763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610a439190611ff6565b90505f815f015190505f826020015190505f836040015190505f8103610a95576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610abf308573ffffffffffffffffffffffffffffffffffffffff166114ae90919063ffffffff16565b905081811015610b0d57845f015181836040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610b0493929190612021565b60405180910390fd5b8360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825f81905550816002819055505f600581905550610b6a336114e1565b610b753360016115b7565b8373ffffffffffffffffffffffffffffffffffffffff167fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d8484604051610bbd929190612056565b60405180910390a250505050508015610bff576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610c11816115f8565b5f8585810190610c219190612196565b90505f8160200151806020019051810190610c3c91906121f1565b90508060025f828254610c4f9190612249565b92505081905550610ca5825f01518260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f015184604051602001610d19939291906122e1565b604051602081830303815290604052604051610d359190611d43565b60405180910390a28060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b610d766113ff565b610d8082826113f0565b5050565b60605f808484810190610d979190612358565b9250509150604051806080016040528060016002811115610dbb57610dba6123a8565b5b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610e1791906123fe565b604051602081830303815290604052815250604051602001610e399190612514565b6040516020818303038152906040529250505092915050565b5f8082610e5e856108ab565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610eaa6113ff565b610eb35f611668565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025481565b5f610ef16113ff565b5f8383810190610f0191906125b9565b90505f8160200151806020019051810190610f1c91906121f1565b90505f610f288761172e565b610f5e576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805403610f6e57819050610f91565b670de0b6b3a7640000825f54610f849190612600565b610f8e919061266e565b90505b60025481600554610fa2919061269e565b1115610fda576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610feb919061269e565b92505081905550600160045f828254611004919061269e565b92505081905550611057878260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161f9092919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689846040516020016110c5939291906122e1565b6040516020818303038152906040526040516110e19190611d43565b60405180910390a2600193505050509392505050565b600261110281611450565b828290508585905014611141576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156111a55761119886868381811061116457611163611e93565b5b90506020020160208101906111799190611a85565b85858481811061118c5761118b611e93565b5b90506020020135611436565b8080600101915050611143565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b60055481565b5f6111da8461172e565b90509392505050565b60026111ee81611450565b82829050858590501461122d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015611291576112848686838181106112505761124f611e93565b5b90506020020160208101906112659190611a85565b85858481811061127857611277611e93565b5b905060200201356113f0565b808060010191505061122f565b505050505050565b60045481565b600181565b6112ac6113ff565b63389a75e1600c52805f526020600c2080544211156112d257636f5e88185f526004601cfd5b5f8155506112df81611668565b50565b6112ea6113ff565b8060601b6112ff57637448fbae5f526004601cfd5b61130881611668565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661132b610eba565b73ffffffffffffffffffffffffffffffffffffffff1614806113575750611356826002600117610e52565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113e957506113e88261173d565b5b9050919050565b6113fb82825f6117b6565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611434576382b429005f526004601cfd5b565b611442828260016117b6565b5050565b5f6202a300905090565b638b78c6d81954331461148257638b78c6d8600c52335f52806020600c205416611481576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b6114e961180e565b15611561577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561152357630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506115b4565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c20541661161c576382b429005f526004601cfd5b50565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661165f576390b8ec185f526004601cfd5b5f603452505050565b61167061180e565b156116d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b821781555061172b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f600254600554109050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806117af57506117ae82611812565b5b9050919050565b638b78c6d8600c52825f526020600c208054838117836117d857848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118c08161188c565b81146118ca575f80fd5b50565b5f813590506118db816118b7565b92915050565b5f602082840312156118f6576118f5611884565b5b5f611903848285016118cd565b91505092915050565b5f8115159050919050565b6119208161190c565b82525050565b5f6020820190506119395f830184611917565b92915050565b5f819050919050565b6119518161193f565b82525050565b5f60208201905061196a5f830184611948565b92915050565b6119798161193f565b8114611983575f80fd5b50565b5f8135905061199481611970565b92915050565b5f602082840312156119af576119ae611884565b5b5f6119bc84828501611986565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ee826119c5565b9050919050565b6119fe816119e4565b8114611a08575f80fd5b50565b5f81359050611a19816119f5565b92915050565b5f8060408385031215611a3557611a34611884565b5b5f611a4285828601611a0b565b9250506020611a5385828601611986565b9150509250929050565b611a668161188c565b82525050565b5f602082019050611a7f5f830184611a5d565b92915050565b5f60208284031215611a9a57611a99611884565b5b5f611aa784828501611a0b565b91505092915050565b611ab9816119e4565b82525050565b5f602082019050611ad25f830184611ab0565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611af957611af8611ad8565b5b8235905067ffffffffffffffff811115611b1657611b15611adc565b5b602083019150836020820283011115611b3257611b31611ae0565b5b9250929050565b5f8083601f840112611b4e57611b4d611ad8565b5b8235905067ffffffffffffffff811115611b6b57611b6a611adc565b5b602083019150836020820283011115611b8757611b86611ae0565b5b9250929050565b5f805f8060408587031215611ba657611ba5611884565b5b5f85013567ffffffffffffffff811115611bc357611bc2611888565b5b611bcf87828801611ae4565b9450945050602085013567ffffffffffffffff811115611bf257611bf1611888565b5b611bfe87828801611b39565b925092505092959194509250565b5f8083601f840112611c2157611c20611ad8565b5b8235905067ffffffffffffffff811115611c3e57611c3d611adc565b5b602083019150836001820283011115611c5a57611c59611ae0565b5b9250929050565b5f8060208385031215611c7757611c76611884565b5b5f83013567ffffffffffffffff811115611c9457611c93611888565b5b611ca085828601611c0c565b92509250509250929050565b5f604082019050611cbf5f830185611948565b611ccc6020830184611ab0565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d1582611cd3565b611d1f8185611cdd565b9350611d2f818560208601611ced565b611d3881611cfb565b840191505092915050565b5f6020820190508181035f830152611d5b8184611d0b565b905092915050565b5f805f60408486031215611d7a57611d79611884565b5b5f611d8786828701611a0b565b935050602084013567ffffffffffffffff811115611da857611da7611888565b5b611db486828701611c0c565b92509250509250925092565b5f8083601f840112611dd557611dd4611ad8565b5b8235905067ffffffffffffffff811115611df257611df1611adc565b5b602083019150836020820283011115611e0e57611e0d611ae0565b5b9250929050565b5f805f8060408587031215611e2d57611e2c611884565b5b5f85013567ffffffffffffffff811115611e4a57611e49611888565b5b611e5687828801611ae4565b9450945050602085013567ffffffffffffffff811115611e7957611e78611888565b5b611e8587828801611dc0565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611ec98161190c565b8114611ed3575f80fd5b50565b5f81359050611ee481611ec0565b92915050565b5f60208284031215611eff57611efe611884565b5b5f611f0c84828501611ed6565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611f4f82611cfb565b810181811067ffffffffffffffff82111715611f6e57611f6d611f19565b5b80604052505050565b5f611f8061187b565b9050611f8c8282611f46565b919050565b5f80fd5b5f60608284031215611faa57611fa9611f15565b5b611fb46060611f77565b90505f611fc384828501611a0b565b5f830152506020611fd684828501611986565b6020830152506040611fea84828501611986565b60408301525092915050565b5f6060828403121561200b5761200a611884565b5b5f61201884828501611f95565b91505092915050565b5f6060820190506120345f830186611ab0565b6120416020830185611948565b61204e6040830184611948565b949350505050565b5f6040820190506120695f830185611948565b6120766020830184611948565b9392505050565b5f80fd5b5f67ffffffffffffffff82111561209b5761209a611f19565b5b6120a482611cfb565b9050602081019050919050565b828183375f83830152505050565b5f6120d16120cc84612081565b611f77565b9050828152602081018484840111156120ed576120ec61207d565b5b6120f88482856120b1565b509392505050565b5f82601f83011261211457612113611ad8565b5b81356121248482602086016120bf565b91505092915050565b5f6040828403121561214257612141611f15565b5b61214c6040611f77565b90505f61215b84828501611a0b565b5f83015250602082013567ffffffffffffffff81111561217e5761217d611f91565b5b61218a84828501612100565b60208301525092915050565b5f602082840312156121ab576121aa611884565b5b5f82013567ffffffffffffffff8111156121c8576121c7611888565b5b6121d48482850161212d565b91505092915050565b5f815190506121eb81611970565b92915050565b5f6020828403121561220657612205611884565b5b5f612213848285016121dd565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6122538261193f565b915061225e8361193f565b92508282039050818111156122765761227561221c565b5b92915050565b5f8160601b9050919050565b5f6122928261227c565b9050919050565b5f6122a382612288565b9050919050565b6122bb6122b6826119e4565b612299565b82525050565b5f819050919050565b6122db6122d68261193f565b6122c1565b82525050565b5f6122ec82866122aa565b6014820191506122fc82856122aa565b60148201915061230c82846122ca565b602082019150819050949350505050565b5f612327826119c5565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b5f805f6060848603121561236f5761236e611884565b5b5f61237c86828701612344565b935050602061238d86828701611986565b925050604061239e86828701611986565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6123de8161193f565b82525050565b602082015f8201516123f85f8501826123d5565b50505050565b5f6020820190506124115f8301846123e4565b92915050565b60038110612428576124276123a8565b5b50565b5f81905061243882612417565b919050565b5f6124478261242b565b9050919050565b6124578161243d565b82525050565b612466816119e4565b82525050565b5f82825260208201905092915050565b5f61248682611cd3565b612490818561246c565b93506124a0818560208601611ced565b6124a981611cfb565b840191505092915050565b5f608083015f8301516124c95f86018261244e565b5060208301516124dc602086018261245d565b5060408301516124ef604086018261245d565b5060608301518482036060860152612507828261247c565b9150508091505092915050565b5f6020820190508181035f83015261252c81846124b4565b905092915050565b5f6040828403121561254957612548611f15565b5b6125536040611f77565b90505f82013567ffffffffffffffff81111561257257612571611f91565b5b61257e84828501612100565b5f83015250602082013567ffffffffffffffff8111156125a1576125a0611f91565b5b6125ad84828501612100565b60208301525092915050565b5f602082840312156125ce576125cd611884565b5b5f82013567ffffffffffffffff8111156125eb576125ea611888565b5b6125f784828501612534565b91505092915050565b5f61260a8261193f565b91506126158361193f565b92508282026126238161193f565b9150828204841483151761263a5761263961221c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126788261193f565b91506126838361193f565b92508261269357612692612641565b5b828204905092915050565b5f6126a88261193f565b91506126b38361193f565b92508282019050808211156126cb576126ca61221c565b5b9291505056fea264697066735822122098b2e10ccc68d93e4b7f96f130455499d273915e375c4ad0557f30c439e8497764736f6c634300081a0033",p5={},y5={},e0={_format:d5,contractName:t5,sourceName:n5,abi:c5,bytecode:i5,deployedBytecode:s5,linkReferences:p5,deployedLinkReferences:y5},r5="hh-sol-artifact-1",u5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",l5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],m5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b61332c806100bd5f395ff3fe608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",T5="0x608060405260043610610219575f3560e01c8063609d333411610122578063cc3c0f06116100aa578063f04e283e1161006e578063f04e283e14610780578063f23a6e611461079c578063f2fde38b146107d8578063fe9fbb80146107f4578063fee81cf41461083057610219565b8063cc3c0f061461068c578063db09da12146106c8578063dcc2136114610704578063dcc59b6f1461072c578063ec87621c1461075657610219565b8063a4d66daf116100f1578063a4d66daf14610598578063a8c62e76146105c2578063bb1757cf146105ec578063bc197c8114610628578063be4994f81461066457610219565b8063609d333414610510578063715018a61461053a57806375b238fc146105445780638da5cb5b1461056e57610219565b80632de94807116101a5578063474f5a4411610174578063474f5a44146104355780634a4ee7b1146104725780634e7165a21461048e578063514e62fc146104ca57806354d1f13d1461050657610219565b80632de948071461037f57806338d52e0f146103bb5780634359d28a146103e5578063439fab911461040d57610219565b80631c10893f116101ec5780631c10893f146102c95780631cd64df4146102e5578063228cb73314610321578063256929621461034b57806328d6183b1461035557610219565b806301ffc9a71461021d57806307621eca1461025957806317d70f7c14610283578063183a4f6e146102ad575b5f80fd5b348015610228575f80fd5b50610243600480360381019061023e9190611d0c565b61086c565b6040516102509190611d51565b60405180910390f35b348015610264575f80fd5b5061026d61094d565b60405161027a9190611d82565b60405180910390f35b34801561028e575f80fd5b50610297610955565b6040516102a49190611d82565b60405180910390f35b6102c760048036038101906102c29190611dc5565b61095b565b005b6102e360048036038101906102de9190611e4a565b610968565b005b3480156102f0575f80fd5b5061030b60048036038101906103069190611e4a565b61097e565b6040516103189190611d51565b60405180910390f35b34801561032c575f80fd5b50610335610994565b6040516103429190611d82565b60405180910390f35b610353610999565b005b348015610360575f80fd5b506103696109ea565b6040516103769190611e97565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a09190611eb0565b610a11565b6040516103b29190611d82565b60405180910390f35b3480156103c6575f80fd5b506103cf610a2a565b6040516103dc9190611eea565b60405180910390f35b3480156103f0575f80fd5b5061040b60048036038101906104069190611fb9565b610a4f565b005b348015610418575f80fd5b50610433600480360381019061042e919061208c565b610b5d565b005b348015610440575f80fd5b5061045b6004803603810190610456919061208c565b610e96565b6040516104699291906120d7565b60405180910390f35b61048c60048036038101906104879190611e4a565b6110c8565b005b348015610499575f80fd5b506104b460048036038101906104af919061208c565b6110de565b6040516104c1919061216e565b60405180910390f35b3480156104d5575f80fd5b506104f060048036038101906104eb9190611e4a565b6111c1565b6040516104fd9190611d51565b60405180910390f35b61050e6111d8565b005b34801561051b575f80fd5b50610524611211565b604051610531919061216e565b60405180910390f35b61054261129d565b005b34801561054f575f80fd5b506105586112b0565b6040516105659190611d82565b60405180910390f35b348015610579575f80fd5b506105826112b5565b60405161058f9190611eea565b60405180910390f35b3480156105a3575f80fd5b506105ac6112dd565b6040516105b99190611d82565b60405180910390f35b3480156105cd575f80fd5b506105d66112e3565b6040516105e39190612201565b60405180910390f35b3480156105f7575f80fd5b50610612600480360381019061060d919061221a565b6112f5565b60405161061f9190611d51565b60405180910390f35b348015610633575f80fd5b5061064e600480360381019061064991906122cc565b611507565b60405161065b9190611e97565b60405180910390f35b34801561066f575f80fd5b5061068a600480360381019061068591906123a3565b61151e565b005b348015610697575f80fd5b506106b260048036038101906106ad9190612454565b6115d4565b6040516106bf9190611d51565b60405180910390f35b3480156106d3575f80fd5b506106ee60048036038101906106e9919061221a565b6115f1565b6040516106fb9190611d51565b60405180910390f35b34801561070f575f80fd5b5061072a600480360381019061072591906123a3565b611612565b005b348015610737575f80fd5b506107406116c8565b60405161074d9190611d82565b60405180910390f35b348015610761575f80fd5b5061076a6116ce565b6040516107779190611d82565b60405180910390f35b61079a60048036038101906107959190611eb0565b6116d3565b005b3480156107a7575f80fd5b506107c260048036038101906107bd919061247f565b611711565b6040516107cf9190611e97565b60405180910390f35b6107f260048036038101906107ed9190611eb0565b611726565b005b3480156107ff575f80fd5b5061081a60048036038101906108159190611eb0565b61174f565b6040516108279190611d51565b60405180910390f35b34801561083b575f80fd5b5061085660048036038101906108519190611eb0565b6117a2565b6040516108639190611d82565b60405180910390f35b5f7f9e4fa10b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061093657507f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109465750610945826117bb565b5b9050919050565b5f8054905090565b60045481565b6109653382611834565b50565b610970611843565b61097a828261187a565b5050565b5f818261098a85610a11565b1614905092915050565b5f5481565b5f6109a261188a565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f9e4fa10b00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002610a5a81611894565b828290508585905014610a99576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b85859050811015610b55575f848483818110610aba57610ab9612515565b5b9050602002016020810190610acf919061256c565b90506001151581151503610b1457610b0f878784818110610af357610af2612515565b5b9050602002016020810190610b089190611eb0565b600161187a565b610b47565b610b46878784818110610b2a57610b29612515565b5b9050602002016020810190610b3f9190611eb0565b6001611834565b5b508080600101915050610a9b565b505050505050565b5f610b666118c9565b90508054600382558015610b985760018160011c14303b10610b8f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8383810190610ba991906127ca565b905060015f81905550600180811115610bc557610bc461218e565b5b81602001516001811115610bdc57610bdb61218e565b5b03610c13576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816060015103610c50576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f815f015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e3084604001516040518363ffffffff1660e01b8152600401610c92929190612811565b602060405180830381865afa158015610cad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd1919061284c565b90508160600151811015610d2757815f01518183606001516040517f5c54305e000000000000000000000000000000000000000000000000000000008152600401610d1e93929190612877565b60405180910390fd5b815f015160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816020015160025f6101000a81548160ff02191690836001811115610d9257610d9161218e565b5b021790555081604001516004819055508160600151600381905550816080015160059081610dc09190612aa6565b50610dca336118f2565b610dd53360016119c8565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c60025f9054906101000a900460ff16600454600354604051610e5293929190612b75565b60405180910390a250508015610e91576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610ea381611a09565b5f8585810190610eb39190612c13565b90505f8160200151806020019051810190610ece919061284c565b9050600754600354610ee09190612c87565b811115610f45573382604051602001610ef99190612d4b565b6040516020818303038152906040526040517f4139d81d000000000000000000000000000000000000000000000000000000008152600401610f3c929190612d6b565b60405180910390fd5b8060035f828254610f569190612c87565b9250508190555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a30845f01516004548587602001516040518663ffffffff1660e01b8152600401610fc8959493929190612d99565b5f604051808303815f87803b158015610fdf575f80fd5b505af1158015610ff1573d5f803e3d5ffd5b50505050815f015173ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16845f0151600454858760200151604051602001611073959493929190612e90565b60405160208183030381529060405260405161108f919061216e565b60405180910390a28060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094505050509250929050565b6110d0611843565b6110da8282611834565b5050565b60605f83838101906110f091906127ca565b905060405180608001604052806002808111156111105761110f61218e565b5b8152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016040518060600160405280846040015181526020018460600151815260200184608001518152506040516020016111879190612f46565b6040516020818303038152906040528152506040516020016111a9919061300c565b60405160208183030381529060405291505092915050565b5f80826111cd85610a11565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461121e906128d9565b80601f016020809104026020016040519081016040528092919081815260200182805461124a906128d9565b80156112955780601f1061126c57610100808354040283529160200191611295565b820191905f5260205f20905b81548152906001019060200180831161127857829003601f168201915b505050505081565b6112a5611843565b6112ae5f611a30565b565b600281565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60035481565b60025f9054906101000a900460ff1681565b5f6112fe611843565b5f6113098484611af6565b90505f600181111561131e5761131d61218e565b5b60025f9054906101000a900460ff16600181111561133f5761133e61218e565b5b036114fb5761134d81611b32565b611383576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8154809291906113959061302c565b91905055506001805f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3087600454600189896040518763ffffffff1660e01b8152600401611429969594939291906130d8565b5f604051808303815f87803b158015611440575f80fd5b505af1158015611452573d5f803e3d5ffd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600454600189896040516020016114cd96959493929190613156565b6040516020818303038152906040526040516114e9919061216e565b60405180910390a26001915050611500565b5f9150505b9392505050565b5f63bc197c8160e01b905098975050505050505050565b600261152981611894565b828290508585905014611568576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156115cc576115bf86868381811061158b5761158a612515565b5b90506020020160208101906115a09190611eb0565b8585848181106115b3576115b2612515565b5b9050602002013561187a565b808060010191505061156a565b505050505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f806115fd8484611af6565b905061160881611b32565b9150509392505050565b600261161d81611894565b82829050858590501461165c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b858590508110156116c0576116b386868381811061167f5761167e612515565b5b90506020020160208101906116949190611eb0565b8585848181106116a7576116a6612515565b5b90506020020135611834565b808060010191505061165e565b505050505050565b60075481565b600181565b6116db611843565b63389a75e1600c52805f526020600c20805442111561170157636f5e88185f526004601cfd5b5f81555061170e81611a30565b50565b5f63f23a6e6160e01b90509695505050505050565b61172e611843565b8060601b61174357637448fbae5f526004601cfd5b61174c81611a30565b50565b5f8173ffffffffffffffffffffffffffffffffffffffff1661176f6112b5565b73ffffffffffffffffffffffffffffffffffffffff16148061179b575061179a8260026001176111c1565b5b9050919050565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061182d575061182c82611b68565b5b9050919050565b61183f82825f611be1565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611878576382b429005f526004601cfd5b565b61188682826001611be1565b5050565b5f6202a300905090565b638b78c6d8195433146118c657638b78c6d8600c52335f52806020600c2054166118c5576382b429005f526004601cfd5b5b50565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6118fa611c39565b15611972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392780541561193457630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3506119c5565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d8600c52335f52806020600c205416611a2d576382b429005f526004601cfd5b50565b611a38611c39565b15611a9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611af3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f808383810190611b079190613237565b90505f8160200151806020019051810190611b2291906132cb565b9050805f01519250505092915050565b5f60015f8381526020019081526020015f205f9054906101000a900460ff16158015611b615750600354600754105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611bda5750611bd982611c3d565b5b9050919050565b638b78c6d8600c52825f526020600c20805483811783611c0357848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ceb81611cb7565b8114611cf5575f80fd5b50565b5f81359050611d0681611ce2565b92915050565b5f60208284031215611d2157611d20611caf565b5b5f611d2e84828501611cf8565b91505092915050565b5f8115159050919050565b611d4b81611d37565b82525050565b5f602082019050611d645f830184611d42565b92915050565b5f819050919050565b611d7c81611d6a565b82525050565b5f602082019050611d955f830184611d73565b92915050565b611da481611d6a565b8114611dae575f80fd5b50565b5f81359050611dbf81611d9b565b92915050565b5f60208284031215611dda57611dd9611caf565b5b5f611de784828501611db1565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e1982611df0565b9050919050565b611e2981611e0f565b8114611e33575f80fd5b50565b5f81359050611e4481611e20565b92915050565b5f8060408385031215611e6057611e5f611caf565b5b5f611e6d85828601611e36565b9250506020611e7e85828601611db1565b9150509250929050565b611e9181611cb7565b82525050565b5f602082019050611eaa5f830184611e88565b92915050565b5f60208284031215611ec557611ec4611caf565b5b5f611ed284828501611e36565b91505092915050565b611ee481611e0f565b82525050565b5f602082019050611efd5f830184611edb565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611f2457611f23611f03565b5b8235905067ffffffffffffffff811115611f4157611f40611f07565b5b602083019150836020820283011115611f5d57611f5c611f0b565b5b9250929050565b5f8083601f840112611f7957611f78611f03565b5b8235905067ffffffffffffffff811115611f9657611f95611f07565b5b602083019150836020820283011115611fb257611fb1611f0b565b5b9250929050565b5f805f8060408587031215611fd157611fd0611caf565b5b5f85013567ffffffffffffffff811115611fee57611fed611cb3565b5b611ffa87828801611f0f565b9450945050602085013567ffffffffffffffff81111561201d5761201c611cb3565b5b61202987828801611f64565b925092505092959194509250565b5f8083601f84011261204c5761204b611f03565b5b8235905067ffffffffffffffff81111561206957612068611f07565b5b60208301915083600182028301111561208557612084611f0b565b5b9250929050565b5f80602083850312156120a2576120a1611caf565b5b5f83013567ffffffffffffffff8111156120bf576120be611cb3565b5b6120cb85828601612037565b92509250509250929050565b5f6040820190506120ea5f830185611d73565b6120f76020830184611edb565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612140826120fe565b61214a8185612108565b935061215a818560208601612118565b61216381612126565b840191505092915050565b5f6020820190508181035f8301526121868184612136565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106121cc576121cb61218e565b5b50565b5f8190506121dc826121bb565b919050565b5f6121eb826121cf565b9050919050565b6121fb816121e1565b82525050565b5f6020820190506122145f8301846121f2565b92915050565b5f805f6040848603121561223157612230611caf565b5b5f61223e86828701611e36565b935050602084013567ffffffffffffffff81111561225f5761225e611cb3565b5b61226b86828701612037565b92509250509250925092565b5f8083601f84011261228c5761228b611f03565b5b8235905067ffffffffffffffff8111156122a9576122a8611f07565b5b6020830191508360208202830111156122c5576122c4611f0b565b5b9250929050565b5f805f805f805f8060a0898b0312156122e8576122e7611caf565b5b5f6122f58b828c01611e36565b98505060206123068b828c01611e36565b975050604089013567ffffffffffffffff81111561232757612326611cb3565b5b6123338b828c01612277565b9650965050606089013567ffffffffffffffff81111561235657612355611cb3565b5b6123628b828c01612277565b9450945050608089013567ffffffffffffffff81111561238557612384611cb3565b5b6123918b828c01612037565b92509250509295985092959890939650565b5f805f80604085870312156123bb576123ba611caf565b5b5f85013567ffffffffffffffff8111156123d8576123d7611cb3565b5b6123e487828801611f0f565b9450945050602085013567ffffffffffffffff81111561240757612406611cb3565b5b61241387828801612277565b925092505092959194509250565b5f819050919050565b61243381612421565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f6020828403121561246957612468611caf565b5b5f61247684828501612440565b91505092915050565b5f805f805f8060a0878903121561249957612498611caf565b5b5f6124a689828a01611e36565b96505060206124b789828a01611e36565b95505060406124c889828a01611db1565b94505060606124d989828a01611db1565b935050608087013567ffffffffffffffff8111156124fa576124f9611cb3565b5b61250689828a01612037565b92509250509295509295509295565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61254b81611d37565b8114612555575f80fd5b50565b5f8135905061256681612542565b92915050565b5f6020828403121561258157612580611caf565b5b5f61258e84828501612558565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6125d182612126565b810181811067ffffffffffffffff821117156125f0576125ef61259b565b5b80604052505050565b5f612602611ca6565b905061260e82826125c8565b919050565b5f80fd5b5f61262182611e0f565b9050919050565b61263181612617565b811461263b575f80fd5b50565b5f8135905061264c81612628565b92915050565b6002811061265e575f80fd5b50565b5f8135905061266f81612652565b92915050565b5f80fd5b5f67ffffffffffffffff8211156126935761269261259b565b5b61269c82612126565b9050602081019050919050565b828183375f83830152505050565b5f6126c96126c484612679565b6125f9565b9050828152602081018484840111156126e5576126e4612675565b5b6126f08482856126a9565b509392505050565b5f82601f83011261270c5761270b611f03565b5b813561271c8482602086016126b7565b91505092915050565b5f60a0828403121561273a57612739612597565b5b61274460a06125f9565b90505f6127538482850161263e565b5f83015250602061276684828501612661565b602083015250604061277a84828501611db1565b604083015250606061278e84828501611db1565b606083015250608082013567ffffffffffffffff8111156127b2576127b1612613565b5b6127be848285016126f8565b60808301525092915050565b5f602082840312156127df576127de611caf565b5b5f82013567ffffffffffffffff8111156127fc576127fb611cb3565b5b61280884828501612725565b91505092915050565b5f6040820190506128245f830185611edb565b6128316020830184611d73565b9392505050565b5f8151905061284681611d9b565b92915050565b5f6020828403121561286157612860611caf565b5b5f61286e84828501612838565b91505092915050565b5f60608201905061288a5f830186611edb565b6128976020830185611d73565b6128a46040830184611d73565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128f057607f821691505b602082108103612903576129026128ac565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026129657fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261292a565b61296f868361292a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6129aa6129a56129a084611d6a565b612987565b611d6a565b9050919050565b5f819050919050565b6129c383612990565b6129d76129cf826129b1565b848454612936565b825550505050565b5f90565b6129eb6129df565b6129f68184846129ba565b505050565b5b81811015612a1957612a0e5f826129e3565b6001810190506129fc565b5050565b601f821115612a5e57612a2f81612909565b612a388461291b565b81016020851015612a47578190505b612a5b612a538561291b565b8301826129fb565b50505b505050565b5f82821c905092915050565b5f612a7e5f1984600802612a63565b1980831691505092915050565b5f612a968383612a6f565b9150826002028217905092915050565b612aaf826120fe565b67ffffffffffffffff811115612ac857612ac761259b565b5b612ad282546128d9565b612add828285612a1d565b5f60209050601f831160018114612b0e575f8415612afc578287015190505b612b068582612a8b565b865550612b6d565b601f198416612b1c86612909565b5f5b82811015612b4357848901518255600182019150602085019450602081019050612b1e565b86831015612b605784890151612b5c601f891682612a6f565b8355505b6001600288020188555050505b505050505050565b5f606082019050612b885f8301866121f2565b612b956020830185611d73565b612ba26040830184611d73565b949350505050565b5f60408284031215612bbf57612bbe612597565b5b612bc960406125f9565b90505f612bd884828501611e36565b5f83015250602082013567ffffffffffffffff811115612bfb57612bfa612613565b5b612c07848285016126f8565b60208301525092915050565b5f60208284031215612c2857612c27611caf565b5b5f82013567ffffffffffffffff811115612c4557612c44611cb3565b5b612c5184828501612baa565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9182611d6a565b9150612c9c83611d6a565b9250828203905081811115612cb457612cb3612c5a565b5b92915050565b612cc381611e0f565b82525050565b5f82825260208201905092915050565b5f612ce3826120fe565b612ced8185612cc9565b9350612cfd818560208601612118565b612d0681612126565b840191505092915050565b5f604083015f830151612d265f860182612cba565b5060208301518482036020860152612d3e8282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612d638184612d11565b905092915050565b5f604082019050612d7e5f830185611edb565b8181036020830152612d908184612136565b90509392505050565b5f60a082019050612dac5f830188611edb565b612db96020830187611edb565b612dc66040830186611d73565b612dd36060830185611d73565b8181036080830152612de58184612136565b90509695505050505050565b5f8160601b9050919050565b5f612e0782612df1565b9050919050565b5f612e1882612dfd565b9050919050565b612e30612e2b82611e0f565b612e0e565b82525050565b5f819050919050565b612e50612e4b82611d6a565b612e36565b82525050565b5f81905092915050565b5f612e6a826120fe565b612e748185612e56565b9350612e84818560208601612118565b80840191505092915050565b5f612e9b8288612e1f565b601482019150612eab8287612e1f565b601482019150612ebb8286612e3f565b602082019150612ecb8285612e3f565b602082019150612edb8284612e60565b91508190509695505050505050565b612ef381611d6a565b82525050565b5f606083015f830151612f0e5f860182612eea565b506020830151612f216020860182612eea565b5060408301518482036040860152612f398282612cd9565b9150508091505092915050565b5f6020820190508181035f830152612f5e8184612ef9565b905092915050565b60038110612f7757612f7661218e565b5b50565b5f819050612f8782612f66565b919050565b5f612f9682612f7a565b9050919050565b612fa681612f8c565b82525050565b5f608083015f830151612fc15f860182612f9d565b506020830151612fd46020860182612cba565b506040830151612fe76040860182612cba565b5060608301518482036060860152612fff8282612cd9565b9150508091505092915050565b5f6020820190508181035f8301526130248184612fac565b905092915050565b5f61303682611d6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361306857613067612c5a565b5b600182019050919050565b5f819050919050565b5f61309661309161308c84613073565b612987565b611d6a565b9050919050565b6130a68161307c565b82525050565b5f6130b78385612108565b93506130c48385846126a9565b6130cd83612126565b840190509392505050565b5f60a0820190506130eb5f830189611edb565b6130f86020830188611edb565b6131056040830187611d73565b613112606083018661309d565b81810360808301526131258184866130ac565b9050979650505050505050565b5f61313d8385612e56565b935061314a8385846126a9565b82840190509392505050565b5f6131618289612e1f565b6014820191506131718288612e1f565b6014820191506131818287612e3f565b6020820191506131918286612e3f565b6020820191506131a2828486613132565b9150819050979650505050505050565b5f604082840312156131c7576131c6612597565b5b6131d160406125f9565b90505f82013567ffffffffffffffff8111156131f0576131ef612613565b5b6131fc848285016126f8565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612613565b5b61322b848285016126f8565b60208301525092915050565b5f6020828403121561324c5761324b611caf565b5b5f82013567ffffffffffffffff81111561326957613268611cb3565b5b613275848285016131b2565b91505092915050565b5f8151905061328c8161242a565b92915050565b5f602082840312156132a7576132a6612597565b5b6132b160206125f9565b90505f6132c08482850161327e565b5f8301525092915050565b5f602082840312156132e0576132df611caf565b5b5f6132ed84828501613292565b9150509291505056fea2646970667358221220f981380ee8a399e01ea34317dd1b7c335a45e528493e8eccb4b76c5d03d6e0a864736f6c634300081a0033",v5={},w5={},a0={_format:r5,contractName:u5,sourceName:o5,abi:l5,bytecode:m5,deployedBytecode:T5,linkReferences:v5,deployedLinkReferences:w5},M5="hh-sol-artifact-1",I5="PointsIncentive",h5="contracts/incentives/PointsIncentive.sol",A5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],g5="0x6080604052348015600e575f80fd5b50601b601f60201b60201c565b60b0565b5f602c608760201b60201c565b90508054600181161560455763f92ee8a95f526004601cfd5b8160c01c808260011c146082578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b611c21806100bd5f395ff3fe6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",R5="0x6080604052600436106101b6575f3560e01c8063514e62fc116100eb578063c884ef8311610089578063ea3d508a11610063578063ea3d508a146105c1578063f04e283e146105eb578063f2fde38b14610607578063fee81cf414610623576101b6565b8063c884ef831461051f578063db09da121461055b578063dcc59b6f14610597576101b6565b80638da5cb5b116100c55780638da5cb5b14610465578063a270a7371461048f578063a4d66daf146104b9578063bb1757cf146104e3576101b6565b8063514e62fc1461041557806354d1f13d14610451578063715018a61461045b576101b6565b806328d6183b11610158578063439fab9111610132578063439fab9114610358578063474f5a44146103805780634a4ee7b1146103bd5780634e7165a2146103d9576101b6565b806328d6183b146102c85780632de94807146102f257806338d52e0f1461032e576101b6565b80631c10893f116101945780631c10893f1461023c5780631cd64df414610258578063228cb7331461029457806325692962146102be576101b6565b806301ffc9a7146101ba57806307621eca146101f6578063183a4f6e14610220575b5f80fd5b3480156101c5575f80fd5b506101e060048036038101906101db919061145a565b61065f565b6040516101ed919061149f565b60405180910390f35b348015610201575f80fd5b5061020a6106d8565b60405161021791906114d0565b60405180910390f35b61023a60048036038101906102359190611513565b6106e0565b005b61025660048036038101906102519190611598565b6106ed565b005b348015610263575f80fd5b5061027e60048036038101906102799190611598565b610703565b60405161028b919061149f565b60405180910390f35b34801561029f575f80fd5b506102a8610719565b6040516102b591906114d0565b60405180910390f35b6102c661071e565b005b3480156102d3575f80fd5b506102dc61076f565b6040516102e991906115e5565b60405180910390f35b3480156102fd575f80fd5b50610318600480360381019061031391906115fe565b610796565b60405161032591906114d0565b60405180910390f35b348015610339575f80fd5b506103426107af565b60405161034f9190611638565b60405180910390f35b348015610363575f80fd5b5061037e600480360381019061037991906116b2565b6107ca565b005b34801561038b575f80fd5b506103a660048036038101906103a191906116b2565b610982565b6040516103b49291906116fd565b60405180910390f35b6103d760048036038101906103d29190611598565b6109b6565b005b3480156103e4575f80fd5b506103ff60048036038101906103fa91906116b2565b6109cc565b60405161040c9190611794565b60405180910390f35b348015610420575f80fd5b5061043b60048036038101906104369190611598565b610a23565b604051610448919061149f565b60405180910390f35b610459610a3a565b005b610463610a73565b005b348015610470575f80fd5b50610479610a86565b6040516104869190611638565b60405180910390f35b34801561049a575f80fd5b506104a3610aae565b6040516104b09190611638565b60405180910390f35b3480156104c4575f80fd5b506104cd610ad3565b6040516104da91906114d0565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906117b4565b610ad9565b604051610516919061149f565b60405180910390f35b34801561052a575f80fd5b50610545600480360381019061054091906115fe565b610eee565b604051610552919061149f565b60405180910390f35b348015610566575f80fd5b50610581600480360381019061057c91906117b4565b610f0b565b60405161058e919061149f565b60405180910390f35b3480156105a2575f80fd5b506105ab610f1e565b6040516105b891906114d0565b60405180910390f35b3480156105cc575f80fd5b506105d5610f24565b6040516105e291906115e5565b60405180910390f35b610605600480360381019061060091906115fe565b610f36565b005b610621600480360381019061061c91906115fe565b610f74565b005b34801561062e575f80fd5b50610649600480360381019061064491906115fe565b610f9d565b60405161065691906114d0565b60405180910390f35b5f7f0d36a40d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d157506106d082610fb6565b5b9050919050565b5f8054905090565b6106ea338261102f565b50565b6106f561103e565b6106ff8282611075565b5050565b5f818261070f85610796565b1614905092915050565b5f5481565b5f610727611085565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7f0d36a40d00000000000000000000000000000000000000000000000000000000905090565b5f638b78c6d8600c52815f526020600c20549050919050565b5f73deaddeaddeaddeaddeaddeaddeaddeaddeaddead905090565b5f6107d361108f565b905080546003825580156108055760018160011c14303b106107fc5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f83838101906108169190611902565b90505f8160400151148061082d57505f8160600151145b15610864576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f015160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806020015160045f6101000a81548163ffffffff021916908360e01c021790555080604001515f8190555080606001516003819055506108e6336110b8565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161093f9392919061192d565b60405180910390a250801561097d576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109be61103e565b6109c8828261102f565b5050565b60605f67ffffffffffffffff8111156109e8576109e7611815565b5b6040519080825280601f01601f191660200182016040528015610a1a5781602001600182028036833780820191505090505b50905092915050565b5f8082610a2f85610796565b161415905092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610a7b61103e565b610a845f61118e565b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b5f610ae261103e565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b9190611976565b73ffffffffffffffffffffffffffffffffffffffff1614158015610c2e5750600115158173ffffffffffffffffffffffffffffffffffffffff1663514e62fc3060026040518363ffffffff1660e01b8152600401610bea9291906119e3565b602060405180830381865afa158015610c05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190611a34565b151514155b15610c65576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c6e85611254565b610ca4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f815480929190610cb690611a8c565b91905055506001805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900460e01b875f54604051602401610d6b929190611ad3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610dd59190611b34565b5f604051808303815f865af19150503d805f8114610e0e576040519150601f19603f3d011682016040523d82523d5f602084013e610e13565b606091505b5050905080610e4e576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16885f54604051602001610ebd93929190611baf565b604051602081830303815290604052604051610ed99190611794565b60405180910390a26001925050509392505050565b6001602052805f5260405f205f915054906101000a900460ff1681565b5f610f1584611254565b90509392505050565b60055481565b60045f9054906101000a900460e01b81565b610f3e61103e565b63389a75e1600c52805f526020600c208054421115610f6457636f5e88185f526004601cfd5b5f815550610f718161118e565b50565b610f7c61103e565b8060601b610f9157637448fbae5f526004601cfd5b610f9a8161118e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fa9216705000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110285750611027826112b6565b5b9050919050565b61103a82825f61132f565b5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314611073576382b429005f526004601cfd5b565b6110818282600161132f565b5050565b5f6202a300905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b6110c0611387565b15611138577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278054156110fa57630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35061118b565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b611196611387565b156111fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550611251565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156112af5750600354600554105b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061132857506113278261138b565b5b9050919050565b638b78c6d8600c52825f526020600c2080548381178361135157848216821890505b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f90565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61143981611405565b8114611443575f80fd5b50565b5f8135905061145481611430565b92915050565b5f6020828403121561146f5761146e6113fd565b5b5f61147c84828501611446565b91505092915050565b5f8115159050919050565b61149981611485565b82525050565b5f6020820190506114b25f830184611490565b92915050565b5f819050919050565b6114ca816114b8565b82525050565b5f6020820190506114e35f8301846114c1565b92915050565b6114f2816114b8565b81146114fc575f80fd5b50565b5f8135905061150d816114e9565b92915050565b5f60208284031215611528576115276113fd565b5b5f611535848285016114ff565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115678261153e565b9050919050565b6115778161155d565b8114611581575f80fd5b50565b5f813590506115928161156e565b92915050565b5f80604083850312156115ae576115ad6113fd565b5b5f6115bb85828601611584565b92505060206115cc858286016114ff565b9150509250929050565b6115df81611405565b82525050565b5f6020820190506115f85f8301846115d6565b92915050565b5f60208284031215611613576116126113fd565b5b5f61162084828501611584565b91505092915050565b6116328161155d565b82525050565b5f60208201905061164b5f830184611629565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261167257611671611651565b5b8235905067ffffffffffffffff81111561168f5761168e611655565b5b6020830191508360018202830111156116ab576116aa611659565b5b9250929050565b5f80602083850312156116c8576116c76113fd565b5b5f83013567ffffffffffffffff8111156116e5576116e4611401565b5b6116f18582860161165d565b92509250509250929050565b5f6040820190506117105f8301856114c1565b61171d6020830184611629565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61176682611724565b611770818561172e565b935061178081856020860161173e565b6117898161174c565b840191505092915050565b5f6020820190508181035f8301526117ac818461175c565b905092915050565b5f805f604084860312156117cb576117ca6113fd565b5b5f6117d886828701611584565b935050602084013567ffffffffffffffff8111156117f9576117f8611401565b5b6118058682870161165d565b92509250509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61184b8261174c565b810181811067ffffffffffffffff8211171561186a57611869611815565b5b80604052505050565b5f61187c6113f4565b90506118888282611842565b919050565b5f608082840312156118a2576118a1611811565b5b6118ac6080611873565b90505f6118bb84828501611584565b5f8301525060206118ce84828501611446565b60208301525060406118e2848285016114ff565b60408301525060606118f6848285016114ff565b60608301525092915050565b5f60808284031215611917576119166113fd565b5b5f6119248482850161188d565b91505092915050565b5f6060820190506119405f8301866115d6565b61194d60208301856114c1565b61195a60408301846114c1565b949350505050565b5f815190506119708161156e565b92915050565b5f6020828403121561198b5761198a6113fd565b5b5f61199884828501611962565b91505092915050565b5f819050919050565b5f819050919050565b5f6119cd6119c86119c3846119a1565b6119aa565b6114b8565b9050919050565b6119dd816119b3565b82525050565b5f6040820190506119f65f830185611629565b611a0360208301846119d4565b9392505050565b611a1381611485565b8114611a1d575f80fd5b50565b5f81519050611a2e81611a0a565b92915050565b5f60208284031215611a4957611a486113fd565b5b5f611a5684828501611a20565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611a96826114b8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ac857611ac7611a5f565b5b600182019050919050565b5f604082019050611ae65f830185611629565b611af360208301846114c1565b9392505050565b5f81905092915050565b5f611b0e82611724565b611b188185611afa565b9350611b2881856020860161173e565b80840191505092915050565b5f611b3f8284611b04565b915081905092915050565b5f8160601b9050919050565b5f611b6082611b4a565b9050919050565b5f611b7182611b56565b9050919050565b611b89611b848261155d565b611b67565b82525050565b5f819050919050565b611ba9611ba4826114b8565b611b8f565b82525050565b5f611bba8286611b78565b601482019150611bca8285611b78565b601482019150611bda8284611b98565b60208201915081905094935050505056fea264697066735822122082d6437e7160694ebcc6f5718c4ee30e3efa64dceafb1a566026f6dd8b9107f164736f6c634300081a0033",O5={},x5={},d0={_format:M5,contractName:I5,sourceName:h5,abi:A5,bytecode:g5,deployedBytecode:R5,linkReferences:O5,deployedLinkReferences:x5},C5="hh-sol-artifact-1",_5="LimitedSignerValidator",z5="contracts/validators/LimitedSignerValidator.sol",N5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],E5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e0516101005161235761028a5f395f610fda01525f61128101525f61125e01525f6112f001525f61131401526123575ff3fe608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f14610351578063d3de6e751461037b578063f04e283e146103b7578063f2fde38b146103d3578063fee81cf4146103ef57610113565b8063715018a614610289578063736c0d5b1461029357806384b0196e146102cf5780638da5cb5b146102ff578063a1d2756f1461032957610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611505565b61042b565b60405161014a919061154a565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115f0565b6104a4565b6040516101869190611658565b60405180910390f35b6101976104d9565b005b3480156101a4575f80fd5b506101ad61052a565b6040516101ba9190611680565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116c3565b610551565b6040516101f691906116fd565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117cc565b610566565b005b348015610232575f80fd5b5061024d6004803603810190610248919061189f565b61066f565b005b6102576107f1565b005b610273600480360381019061026e91906118ea565b61082a565b604051610280919061154a565b60405180910390f35b61029161088f565b005b34801561029e575f80fd5b506102b960048036038101906102b4919061196e565b6108a2565b6040516102c6919061154a565b60405180910390f35b3480156102da575f80fd5b506102e36108be565b6040516102f69796959493929190611b09565b60405180910390f35b34801561030a575f80fd5b50610313610909565b6040516103209190611b8b565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a919061196e565b610931565b005b34801561035c575f80fd5b5061036561097c565b60405161037291906116fd565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190611d02565b610982565b6040516103ae9190611658565b60405180910390f35b6103d160048036038101906103cc919061196e565b6109eb565b005b6103ed60048036038101906103e8919061196e565b610a29565b005b3480156103fa575f80fd5b506104156004803603810190610410919061196e565b610a52565b60405161042291906116fd565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049d575061049c82610a6b565b5b9050919050565b5f8383836040516020016104ba93929190611de7565b6040516020818303038152906040528051906020012090509392505050565b5f6104e2610ae4565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61056e610aee565b8181905084849050146105ad576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610668578282828181106105cd576105cc611e23565b5b90506020020160208101906105e29190611e7a565b5f808787858181106105f7576105f6611e23565b5b905060200201602081019061060c919061196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105af565b5050505050565b5f610678610b25565b905080546003825580156106aa5760018160011c14303b106106a15763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106bd9190611fa0565b9250925092506106e6835f815181106106d9576106d8611e23565b5b6020026020010151610b4e565b806002819055505f5b83518110156107735760015f8086848151811061070f5761070e611e23565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106ef565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107ec576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610836868686610c24565b61087757836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161086e9190611b8b565b60405180910390fd5b6108848686868686610c8b565b905095945050505050565b610897610aee565b6108a05f610e7e565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108f2610f44565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610939610aee565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109e17ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109c695949392919061201b565b60405160208183030381529060405280519060200120610fbb565b9050949350505050565b6109f3610aee565b63389a75e1600c52805f526020600c208054421115610a1957636f5e88185f526004601cfd5b5f815550610a2681610e7e565b50565b610a31610aee565b8060601b610a4657637448fbae5f526004601cfd5b610a4f81610e7e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610add5750610adc82611037565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b23576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b566110b0565b15610bce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c21565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c318585856104a4565b90505f6001805f8481526020019081526020015f2054610c519190612099565b9050600254811115610c67575f92505050610c84565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d229190612159565b90505f815f0151806020019051810190610d3c91906122b3565b90505f610d53898360400151898660200151610982565b905087826040015160ff1611610da6578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610d9d9291906122fa565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e28576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3e818960036110b49092919063ffffffff16565b610e70818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111199092919063ffffffff16565b935050505095945050505050565b610e866110b0565b15610eeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f41565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fc461121c565b15610fd857610fd1611224565b9050611014565b7f000000000000000000000000000000000000000000000000000000000000000090506110036112ec565b1561101357611010611224565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110a957506110a882611344565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110df57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561110c57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561121557604051835f5260208301516040526040835103611186576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118357600193505f60605282604052505050611215565b50505b60418351036111cc5760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111ca57600192505f606052816040525050611215565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061122e61121c565b1561125c575f8061123d610f44565b91509150818051906020012093508080519060200120925050506112a3565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113b657506113b5826113bd565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061142f575061142e82611436565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114e4816114b0565b81146114ee575f80fd5b50565b5f813590506114ff816114db565b92915050565b5f6020828403121561151a576115196114a8565b5b5f611527848285016114f1565b91505092915050565b5f8115159050919050565b61154481611530565b82525050565b5f60208201905061155d5f83018461153b565b92915050565b5f819050919050565b61157581611563565b811461157f575f80fd5b50565b5f813590506115908161156c565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115bf82611596565b9050919050565b6115cf816115b5565b81146115d9575f80fd5b50565b5f813590506115ea816115c6565b92915050565b5f805f60608486031215611607576116066114a8565b5b5f61161486828701611582565b935050602061162586828701611582565b9250506040611636868287016115dc565b9150509250925092565b5f819050919050565b61165281611640565b82525050565b5f60208201905061166b5f830184611649565b92915050565b61167a816114b0565b82525050565b5f6020820190506116935f830184611671565b92915050565b6116a281611640565b81146116ac575f80fd5b50565b5f813590506116bd81611699565b92915050565b5f602082840312156116d8576116d76114a8565b5b5f6116e5848285016116af565b91505092915050565b6116f781611563565b82525050565b5f6020820190506117105f8301846116ee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261173757611736611716565b5b8235905067ffffffffffffffff8111156117545761175361171a565b5b6020830191508360208202830111156117705761176f61171e565b5b9250929050565b5f8083601f84011261178c5761178b611716565b5b8235905067ffffffffffffffff8111156117a9576117a861171a565b5b6020830191508360208202830111156117c5576117c461171e565b5b9250929050565b5f805f80604085870312156117e4576117e36114a8565b5b5f85013567ffffffffffffffff811115611801576118006114ac565b5b61180d87828801611722565b9450945050602085013567ffffffffffffffff8111156118305761182f6114ac565b5b61183c87828801611777565b925092505092959194509250565b5f8083601f84011261185f5761185e611716565b5b8235905067ffffffffffffffff81111561187c5761187b61171a565b5b6020830191508360018202830111156118985761189761171e565b5b9250929050565b5f80602083850312156118b5576118b46114a8565b5b5f83013567ffffffffffffffff8111156118d2576118d16114ac565b5b6118de8582860161184a565b92509250509250929050565b5f805f805f60808688031215611903576119026114a8565b5b5f61191088828901611582565b955050602061192188828901611582565b9450506040611932888289016115dc565b935050606086013567ffffffffffffffff811115611953576119526114ac565b5b61195f8882890161184a565b92509250509295509295909350565b5f60208284031215611983576119826114a8565b5b5f611990848285016115dc565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119cd81611999565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a15826119d3565b611a1f81856119dd565b9350611a2f8185602086016119ed565b611a38816119fb565b840191505092915050565b611a4c816115b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a8481611563565b82525050565b5f611a958383611a7b565b60208301905092915050565b5f602082019050919050565b5f611ab782611a52565b611ac18185611a5c565b9350611acc83611a6c565b805f5b83811015611afc578151611ae38882611a8a565b9750611aee83611aa1565b925050600181019050611acf565b5085935050505092915050565b5f60e082019050611b1c5f83018a6119c4565b8181036020830152611b2e8189611a0b565b90508181036040830152611b428188611a0b565b9050611b5160608301876116ee565b611b5e6080830186611a43565b611b6b60a0830185611649565b81810360c0830152611b7d8184611aad565b905098975050505050505050565b5f602082019050611b9e5f830184611a43565b92915050565b5f60ff82169050919050565b611bb981611ba4565b8114611bc3575f80fd5b50565b5f81359050611bd481611bb0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c14826119fb565b810181811067ffffffffffffffff82111715611c3357611c32611bde565b5b80604052505050565b5f611c4561149f565b9050611c518282611c0b565b919050565b5f67ffffffffffffffff821115611c7057611c6f611bde565b5b611c79826119fb565b9050602081019050919050565b828183375f83830152505050565b5f611ca6611ca184611c56565b611c3c565b905082815260208101848484011115611cc257611cc1611bda565b5b611ccd848285611c86565b509392505050565b5f82601f830112611ce957611ce8611716565b5b8135611cf9848260208601611c94565b91505092915050565b5f805f8060808587031215611d1a57611d196114a8565b5b5f611d2787828801611582565b9450506020611d3887828801611bc6565b9350506040611d49878288016115dc565b925050606085013567ffffffffffffffff811115611d6a57611d696114ac565b5b611d7687828801611cd5565b91505092959194509250565b5f819050919050565b611d9c611d9782611563565b611d82565b82525050565b5f8160601b9050919050565b5f611db882611da2565b9050919050565b5f611dc982611dae565b9050919050565b611de1611ddc826115b5565b611dbf565b82525050565b5f611df28286611d8b565b602082019150611e028285611d8b565b602082019150611e128284611dd0565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e5981611530565b8114611e63575f80fd5b50565b5f81359050611e7481611e50565b92915050565b5f60208284031215611e8f57611e8e6114a8565b5b5f611e9c84828501611e66565b91505092915050565b5f67ffffffffffffffff821115611ebf57611ebe611bde565b5b602082029050602081019050919050565b5f611ee2611edd84611ea5565b611c3c565b90508083825260208201905060208402830185811115611f0557611f0461171e565b5b835b81811015611f2e5780611f1a88826115dc565b845260208401935050602081019050611f07565b5050509392505050565b5f82601f830112611f4c57611f4b611716565b5b8135611f5c848260208601611ed0565b91505092915050565b5f611f6f82611596565b9050919050565b611f7f81611f65565b8114611f89575f80fd5b50565b5f81359050611f9a81611f76565b92915050565b5f805f60608486031215611fb757611fb66114a8565b5b5f84013567ffffffffffffffff811115611fd457611fd36114ac565b5b611fe086828701611f38565b9350506020611ff186828701611f8c565b925050604061200286828701611582565b9150509250925092565b61201581611ba4565b82525050565b5f60a08201905061202e5f830188611649565b61203b60208301876116ee565b612048604083018661200c565b6120556060830185611a43565b6120626080830184611649565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a382611563565b91506120ae83611563565b92508282019050808211156120c6576120c561206c565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120e9576120e86120cc565b5b6120f36040611c3c565b90505f82013567ffffffffffffffff811115612112576121116120d0565b5b61211e84828501611cd5565b5f83015250602082013567ffffffffffffffff811115612141576121406120d0565b5b61214d84828501611cd5565b60208301525092915050565b5f6020828403121561216e5761216d6114a8565b5b5f82013567ffffffffffffffff81111561218b5761218a6114ac565b5b612197848285016120d4565b91505092915050565b5f815190506121ae816115c6565b92915050565b5f6121c66121c184611c56565b611c3c565b9050828152602081018484840111156121e2576121e1611bda565b5b6121ed8482856119ed565b509392505050565b5f82601f83011261220957612208611716565b5b81516122198482602086016121b4565b91505092915050565b5f8151905061223081611bb0565b92915050565b5f6060828403121561224b5761224a6120cc565b5b6122556060611c3c565b90505f612264848285016121a0565b5f83015250602082015167ffffffffffffffff811115612287576122866120d0565b5b612293848285016121f5565b60208301525060406122a784828501612222565b60408301525092915050565b5f602082840312156122c8576122c76114a8565b5b5f82015167ffffffffffffffff8111156122e5576122e46114ac565b5b6122f184828501612236565b91505092915050565b5f60408201905061230d5f83018561200c565b61231a60208301846116ee565b939250505056fea2646970667358221220a6a2f680d6474f5dfa7720a37994a4015b61738d0d41bbea1eee6064131ca86c64736f6c634300081a0033",$5="0x608060405260043610610113575f3560e01c8063715018a61161009f578063ce5c134f11610063578063ce5c134f14610351578063d3de6e751461037b578063f04e283e146103b7578063f2fde38b146103d3578063fee81cf4146103ef57610113565b8063715018a614610289578063736c0d5b1461029357806384b0196e146102cf5780638da5cb5b146102ff578063a1d2756f1461032957610113565b80632f9e058b116100e65780632f9e058b146101c35780634359d28a146101ff578063439fab911461022757806354d1f13d1461024f578063703b69001461025957610113565b806301ffc9a7146101175780630668e9d414610153578063256929621461018f57806328d6183b14610199575b5f80fd5b348015610122575f80fd5b5061013d60048036038101906101389190611505565b61042b565b60405161014a919061154a565b60405180910390f35b34801561015e575f80fd5b50610179600480360381019061017491906115f0565b6104a4565b6040516101869190611658565b60405180910390f35b6101976104d9565b005b3480156101a4575f80fd5b506101ad61052a565b6040516101ba9190611680565b60405180910390f35b3480156101ce575f80fd5b506101e960048036038101906101e491906116c3565b610551565b6040516101f691906116fd565b60405180910390f35b34801561020a575f80fd5b50610225600480360381019061022091906117cc565b610566565b005b348015610232575f80fd5b5061024d6004803603810190610248919061189f565b61066f565b005b6102576107f1565b005b610273600480360381019061026e91906118ea565b61082a565b604051610280919061154a565b60405180910390f35b61029161088f565b005b34801561029e575f80fd5b506102b960048036038101906102b4919061196e565b6108a2565b6040516102c6919061154a565b60405180910390f35b3480156102da575f80fd5b506102e36108be565b6040516102f69796959493929190611b09565b60405180910390f35b34801561030a575f80fd5b50610313610909565b6040516103209190611b8b565b60405180910390f35b348015610334575f80fd5b5061034f600480360381019061034a919061196e565b610931565b005b34801561035c575f80fd5b5061036561097c565b60405161037291906116fd565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190611d02565b610982565b6040516103ae9190611658565b60405180910390f35b6103d160048036038101906103cc919061196e565b6109eb565b005b6103ed60048036038101906103e8919061196e565b610a29565b005b3480156103fa575f80fd5b506104156004803603810190610410919061196e565b610a52565b60405161042291906116fd565b60405180910390f35b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049d575061049c82610a6b565b5b9050919050565b5f8383836040516020016104ba93929190611de7565b6040516020818303038152906040528051906020012090509392505050565b5f6104e2610ae4565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fc8ebc75800000000000000000000000000000000000000000000000000000000905090565b6001602052805f5260405f205f915090505481565b61056e610aee565b8181905084849050146105ad576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015610668578282828181106105cd576105cc611e23565b5b90506020020160208101906105e29190611e7a565b5f808787858181106105f7576105f6611e23565b5b905060200201602081019061060c919061196e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506105af565b5050505050565b5f610678610b25565b905080546003825580156106aa5760018160011c14303b106106a15763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f805f85858101906106bd9190611fa0565b9250925092506106e6835f815181106106d9576106d8611e23565b5b6020026020010151610b4e565b806002819055505f5b83518110156107735760015f8086848151811061070f5761070e611e23565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106ef565b508160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505080156107ec576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f610836868686610c24565b61087757836040517f059b704500000000000000000000000000000000000000000000000000000000815260040161086e9190611b8b565b60405180910390fd5b6108848686868686610c8b565b905095945050505050565b610897610aee565b6108a05f610e7e565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f0000000000000000000000000000000000000000000000000000000000000096506108f2610f44565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b610939610aee565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60025481565b5f6109e17ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f86868686805190602001206040516020016109c695949392919061201b565b60405160208183030381529060405280519060200120610fbb565b9050949350505050565b6109f3610aee565b63389a75e1600c52805f526020600c208054421115610a1957636f5e88185f526004601cfd5b5f815550610a2681610e7e565b50565b610a31610aee565b8060601b610a4657637448fbae5f526004601cfd5b610a4f81610e7e565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7fc8ebc758000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610add5750610adc82611037565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b23576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610b566110b0565b15610bce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610b9057630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610c21565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f80610c318585856104a4565b90505f6001805f8481526020019081526020015f2054610c519190612099565b9050600254811115610c67575f92505050610c84565b8060015f8481526020019081526020015f20819055506001925050505b9392505050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383810190610d229190612159565b90505f815f0151806020019051810190610d3c91906122b3565b90505f610d53898360400151898660200151610982565b905087826040015160ff1611610da6578160400151886040517f17c66bc7000000000000000000000000000000000000000000000000000000008152600401610d9d9291906122fa565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610e28576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3e818960036110b49092919063ffffffff16565b610e70818360200151845f015173ffffffffffffffffffffffffffffffffffffffff166111199092919063ffffffff16565b935050505095945050505050565b610e866110b0565b15610eeb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610f41565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280601681526020017f4c696d697465645369676e657256616c696461746f720000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610fc461121c565b15610fd857610fd1611224565b9050611014565b7f000000000000000000000000000000000000000000000000000000000000000090506110036112ec565b1561101357611010611224565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806110a957506110a882611344565b5b9050919050565b5f90565b5f633f57fc5c60e01b90505f634de1225a60e01b905060078311156110df57815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c600116600118801561110c57835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c9350831561121557604051835f5260208301516040526040835103611186576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d151761118357600193505f60605282604052505050611215565b50505b60418351036111cc5760608301515f1a60205260408301516060526020600160805f60015afa805186183d15176111ca57600192505f606052816040525050611215565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b5f6001905090565b5f8061122e61121c565b1561125c575f8061123d610f44565b91509150818051906020012093508080519060200120925050506112a3565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113b657506113b5826113bd565b5b9050919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061142f575061142e82611436565b5b9050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114e4816114b0565b81146114ee575f80fd5b50565b5f813590506114ff816114db565b92915050565b5f6020828403121561151a576115196114a8565b5b5f611527848285016114f1565b91505092915050565b5f8115159050919050565b61154481611530565b82525050565b5f60208201905061155d5f83018461153b565b92915050565b5f819050919050565b61157581611563565b811461157f575f80fd5b50565b5f813590506115908161156c565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6115bf82611596565b9050919050565b6115cf816115b5565b81146115d9575f80fd5b50565b5f813590506115ea816115c6565b92915050565b5f805f60608486031215611607576116066114a8565b5b5f61161486828701611582565b935050602061162586828701611582565b9250506040611636868287016115dc565b9150509250925092565b5f819050919050565b61165281611640565b82525050565b5f60208201905061166b5f830184611649565b92915050565b61167a816114b0565b82525050565b5f6020820190506116935f830184611671565b92915050565b6116a281611640565b81146116ac575f80fd5b50565b5f813590506116bd81611699565b92915050565b5f602082840312156116d8576116d76114a8565b5b5f6116e5848285016116af565b91505092915050565b6116f781611563565b82525050565b5f6020820190506117105f8301846116ee565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261173757611736611716565b5b8235905067ffffffffffffffff8111156117545761175361171a565b5b6020830191508360208202830111156117705761176f61171e565b5b9250929050565b5f8083601f84011261178c5761178b611716565b5b8235905067ffffffffffffffff8111156117a9576117a861171a565b5b6020830191508360208202830111156117c5576117c461171e565b5b9250929050565b5f805f80604085870312156117e4576117e36114a8565b5b5f85013567ffffffffffffffff811115611801576118006114ac565b5b61180d87828801611722565b9450945050602085013567ffffffffffffffff8111156118305761182f6114ac565b5b61183c87828801611777565b925092505092959194509250565b5f8083601f84011261185f5761185e611716565b5b8235905067ffffffffffffffff81111561187c5761187b61171a565b5b6020830191508360018202830111156118985761189761171e565b5b9250929050565b5f80602083850312156118b5576118b46114a8565b5b5f83013567ffffffffffffffff8111156118d2576118d16114ac565b5b6118de8582860161184a565b92509250509250929050565b5f805f805f60808688031215611903576119026114a8565b5b5f61191088828901611582565b955050602061192188828901611582565b9450506040611932888289016115dc565b935050606086013567ffffffffffffffff811115611953576119526114ac565b5b61195f8882890161184a565b92509250509295509295909350565b5f60208284031215611983576119826114a8565b5b5f611990848285016115dc565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6119cd81611999565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a15826119d3565b611a1f81856119dd565b9350611a2f8185602086016119ed565b611a38816119fb565b840191505092915050565b611a4c816115b5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a8481611563565b82525050565b5f611a958383611a7b565b60208301905092915050565b5f602082019050919050565b5f611ab782611a52565b611ac18185611a5c565b9350611acc83611a6c565b805f5b83811015611afc578151611ae38882611a8a565b9750611aee83611aa1565b925050600181019050611acf565b5085935050505092915050565b5f60e082019050611b1c5f83018a6119c4565b8181036020830152611b2e8189611a0b565b90508181036040830152611b428188611a0b565b9050611b5160608301876116ee565b611b5e6080830186611a43565b611b6b60a0830185611649565b81810360c0830152611b7d8184611aad565b905098975050505050505050565b5f602082019050611b9e5f830184611a43565b92915050565b5f60ff82169050919050565b611bb981611ba4565b8114611bc3575f80fd5b50565b5f81359050611bd481611bb0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611c14826119fb565b810181811067ffffffffffffffff82111715611c3357611c32611bde565b5b80604052505050565b5f611c4561149f565b9050611c518282611c0b565b919050565b5f67ffffffffffffffff821115611c7057611c6f611bde565b5b611c79826119fb565b9050602081019050919050565b828183375f83830152505050565b5f611ca6611ca184611c56565b611c3c565b905082815260208101848484011115611cc257611cc1611bda565b5b611ccd848285611c86565b509392505050565b5f82601f830112611ce957611ce8611716565b5b8135611cf9848260208601611c94565b91505092915050565b5f805f8060808587031215611d1a57611d196114a8565b5b5f611d2787828801611582565b9450506020611d3887828801611bc6565b9350506040611d49878288016115dc565b925050606085013567ffffffffffffffff811115611d6a57611d696114ac565b5b611d7687828801611cd5565b91505092959194509250565b5f819050919050565b611d9c611d9782611563565b611d82565b82525050565b5f8160601b9050919050565b5f611db882611da2565b9050919050565b5f611dc982611dae565b9050919050565b611de1611ddc826115b5565b611dbf565b82525050565b5f611df28286611d8b565b602082019150611e028285611d8b565b602082019150611e128284611dd0565b601482019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611e5981611530565b8114611e63575f80fd5b50565b5f81359050611e7481611e50565b92915050565b5f60208284031215611e8f57611e8e6114a8565b5b5f611e9c84828501611e66565b91505092915050565b5f67ffffffffffffffff821115611ebf57611ebe611bde565b5b602082029050602081019050919050565b5f611ee2611edd84611ea5565b611c3c565b90508083825260208201905060208402830185811115611f0557611f0461171e565b5b835b81811015611f2e5780611f1a88826115dc565b845260208401935050602081019050611f07565b5050509392505050565b5f82601f830112611f4c57611f4b611716565b5b8135611f5c848260208601611ed0565b91505092915050565b5f611f6f82611596565b9050919050565b611f7f81611f65565b8114611f89575f80fd5b50565b5f81359050611f9a81611f76565b92915050565b5f805f60608486031215611fb757611fb66114a8565b5b5f84013567ffffffffffffffff811115611fd457611fd36114ac565b5b611fe086828701611f38565b9350506020611ff186828701611f8c565b925050604061200286828701611582565b9150509250925092565b61201581611ba4565b82525050565b5f60a08201905061202e5f830188611649565b61203b60208301876116ee565b612048604083018661200c565b6120556060830185611a43565b6120626080830184611649565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6120a382611563565b91506120ae83611563565b92508282019050808211156120c6576120c561206c565b5b92915050565b5f80fd5b5f80fd5b5f604082840312156120e9576120e86120cc565b5b6120f36040611c3c565b90505f82013567ffffffffffffffff811115612112576121116120d0565b5b61211e84828501611cd5565b5f83015250602082013567ffffffffffffffff811115612141576121406120d0565b5b61214d84828501611cd5565b60208301525092915050565b5f6020828403121561216e5761216d6114a8565b5b5f82013567ffffffffffffffff81111561218b5761218a6114ac565b5b612197848285016120d4565b91505092915050565b5f815190506121ae816115c6565b92915050565b5f6121c66121c184611c56565b611c3c565b9050828152602081018484840111156121e2576121e1611bda565b5b6121ed8482856119ed565b509392505050565b5f82601f83011261220957612208611716565b5b81516122198482602086016121b4565b91505092915050565b5f8151905061223081611bb0565b92915050565b5f6060828403121561224b5761224a6120cc565b5b6122556060611c3c565b90505f612264848285016121a0565b5f83015250602082015167ffffffffffffffff811115612287576122866120d0565b5b612293848285016121f5565b60208301525060406122a784828501612222565b60408301525092915050565b5f602082840312156122c8576122c76114a8565b5b5f82015167ffffffffffffffff8111156122e5576122e46114ac565b5b6122f184828501612236565b91505092915050565b5f60408201905061230d5f83018561200c565b61231a60208301846116ee565b939250505056fea2646970667358221220a6a2f680d6474f5dfa7720a37994a4015b61738d0d41bbea1eee6064131ca86c64736f6c634300081a0033",k5={},L5={},t0={_format:C5,contractName:_5,sourceName:z5,abi:N5,bytecode:E5,deployedBytecode:$5,linkReferences:k5,deployedLinkReferences:L5},H5="hh-sol-artifact-1",D5="SignerValidator",B5="contracts/validators/SignerValidator.sol",S5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],V5="0x610120604052348015610010575f80fd5b503073ffffffffffffffffffffffffffffffffffffffff16608081815250504660a0818152505060608061004861013960201b60201c565b6100635761005a61014160201b60201c565b80925081935050505b5f61007261013960201b60201c565b610083578280519060200120610087565b5f801b5b90505f61009861013960201b60201c565b6100a95782805190602001206100ad565b5f801b5b90508160c081815250508060e081815250505f6100ce61013960201b60201c565b610118576040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815283602082015282604082015246606082015230608082015260a081209150505b80610100818152505050505050506101346101b860201b60201c565b61024d565b5f6001905090565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f6101c761022460201b60201c565b9050805460018116156101e15763f92ee8a95f526004601cfd5b8160c01c808260011c1461021f578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b60805160a05160c05160e05161010051611efa61028a5f395f610f8f01525f6110ce01525f6110ab01525f61113d01525f6111610152611efa5ff3fe6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102b8578063f04e283e146102f4578063f2fde38b14610310578063fee81cf41461032c576100f2565b8063736c0d5b146101fa57806384b0196e146102365780638da5cb5b14610266578063a1d2756f14610290576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101f0576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611260565b610368565b60405161012991906112a5565b60405180910390f35b61013a6103e1565b005b348015610147575f80fd5b50610150610432565b60405161015d91906112cd565b60405180910390f35b348015610171575f80fd5b5061018c6004803603810190610187919061139c565b610459565b005b348015610199575f80fd5b506101b460048036038101906101af919061146f565b610562565b005b6101be610710565b005b6101da60048036038101906101d59190611547565b610749565b6040516101e791906112a5565b60405180910390f35b6101f861093c565b005b348015610205575f80fd5b50610220600480360381019061021b91906115cb565b61094f565b60405161022d91906112a5565b60405180910390f35b348015610241575f80fd5b5061024a61096b565b60405161025d979695949392919061178d565b60405180910390f35b348015610271575f80fd5b5061027a6109b6565b604051610287919061180f565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b191906115cb565b6109de565b005b3480156102c3575f80fd5b506102de60048036038101906102d99190611986565b610a29565b6040516102eb9190611a06565b60405180910390f35b61030e600480360381019061030991906115cb565b610a92565b005b61032a600480360381019061032591906115cb565b610ad0565b005b348015610337575f80fd5b50610352600480360381019061034d91906115cb565b610af9565b60405161035f9190611a1f565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103da57506103d982610b12565b5b9050919050565b5f6103ea610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b610461610b95565b8181905084849050146104a0576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561055b578282828181106104c0576104bf611a38565b5b90506020020160208101906104d59190611a8f565b5f808787858181106104ea576104e9611a38565b5b90506020020160208101906104ff91906115cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104a2565b5050505050565b5f61056b610bcc565b9050805460038255801561059d5760018160011c14303b106105945763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105af9190611bb5565b915091506105d6825f815181106105c9576105c8611a38565b5b6020026020010151610bf5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b825181101561069c5760015f8085848151811061063857610637611a38565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610618565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106cc919061180f565b60405180910390a15050801561070b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107e09190611c9c565b90505f815f01518060200190518101906107fa9190611df6565b90505f610811898360400151898660200151610a29565b905087826040015160ff1611610864578160400151886040517f17c66bc700000000000000000000000000000000000000000000000000000000815260040161085b929190611e4c565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc81896001610ccb9092919063ffffffff16565b61092e818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d309092919063ffffffff16565b935050505095945050505050565b610944610b95565b61094d5f610e33565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f00000000000000000000000000000000000000000000000000000000000000965061099f610ef9565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109e6610b95565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a887ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a6d959493929190611e73565b60405160208183030381529060405280519060200120610f70565b9050949350505050565b610a9a610b95565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610e33565b50565b610ad8610b95565b8060601b610aed57637448fbae5f526004601cfd5b610af681610e33565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610fec565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bca576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bfd611065565b15610c75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c3757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cc8565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610cf657815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2357835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e2c57604051835f5260208301516040526040835103610d9d576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d9a57600193505f60605282604052505050610e2c565b50505b6041835103610de35760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610de157600192505f606052816040525050610e2c565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e3b611065565b15610ea0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ef6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f79611069565b15610f8d57610f86611071565b9050610fc9565b7f00000000000000000000000000000000000000000000000000000000000000009050610fb8611139565b15610fc857610fc5611071565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061105e575061105d82611191565b5b9050919050565b5f90565b5f6001905090565b5f8061107b611069565b156110a9575f8061108a610ef9565b91509150818051906020012093508080519060200120925050506110f0565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61123f8161120b565b8114611249575f80fd5b50565b5f8135905061125a81611236565b92915050565b5f6020828403121561127557611274611203565b5b5f6112828482850161124c565b91505092915050565b5f8115159050919050565b61129f8161128b565b82525050565b5f6020820190506112b85f830184611296565b92915050565b6112c78161120b565b82525050565b5f6020820190506112e05f8301846112be565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611307576113066112e6565b5b8235905067ffffffffffffffff811115611324576113236112ea565b5b6020830191508360208202830111156113405761133f6112ee565b5b9250929050565b5f8083601f84011261135c5761135b6112e6565b5b8235905067ffffffffffffffff811115611379576113786112ea565b5b602083019150836020820283011115611395576113946112ee565b5b9250929050565b5f805f80604085870312156113b4576113b3611203565b5b5f85013567ffffffffffffffff8111156113d1576113d0611207565b5b6113dd878288016112f2565b9450945050602085013567ffffffffffffffff811115611400576113ff611207565b5b61140c87828801611347565b925092505092959194509250565b5f8083601f84011261142f5761142e6112e6565b5b8235905067ffffffffffffffff81111561144c5761144b6112ea565b5b602083019150836001820283011115611468576114676112ee565b5b9250929050565b5f806020838503121561148557611484611203565b5b5f83013567ffffffffffffffff8111156114a2576114a1611207565b5b6114ae8582860161141a565b92509250509250929050565b5f819050919050565b6114cc816114ba565b81146114d6575f80fd5b50565b5f813590506114e7816114c3565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611516826114ed565b9050919050565b6115268161150c565b8114611530575f80fd5b50565b5f813590506115418161151d565b92915050565b5f805f805f608086880312156115605761155f611203565b5b5f61156d888289016114d9565b955050602061157e888289016114d9565b945050604061158f88828901611533565b935050606086013567ffffffffffffffff8111156115b0576115af611207565b5b6115bc8882890161141a565b92509250509295509295909350565b5f602082840312156115e0576115df611203565b5b5f6115ed84828501611533565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61162a816115f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167282611630565b61167c818561163a565b935061168c81856020860161164a565b61169581611658565b840191505092915050565b6116a9816114ba565b82525050565b6116b88161150c565b82525050565b5f819050919050565b6116d0816116be565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611708816114ba565b82525050565b5f61171983836116ff565b60208301905092915050565b5f602082019050919050565b5f61173b826116d6565b61174581856116e0565b9350611750836116f0565b805f5b83811015611780578151611767888261170e565b975061177283611725565b925050600181019050611753565b5085935050505092915050565b5f60e0820190506117a05f83018a611621565b81810360208301526117b28189611668565b905081810360408301526117c68188611668565b90506117d560608301876116a0565b6117e260808301866116af565b6117ef60a08301856116c7565b81810360c08301526118018184611731565b905098975050505050505050565b5f6020820190506118225f8301846116af565b92915050565b5f60ff82169050919050565b61183d81611828565b8114611847575f80fd5b50565b5f8135905061185881611834565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61189882611658565b810181811067ffffffffffffffff821117156118b7576118b6611862565b5b80604052505050565b5f6118c96111fa565b90506118d5828261188f565b919050565b5f67ffffffffffffffff8211156118f4576118f3611862565b5b6118fd82611658565b9050602081019050919050565b828183375f83830152505050565b5f61192a611925846118da565b6118c0565b9050828152602081018484840111156119465761194561185e565b5b61195184828561190a565b509392505050565b5f82601f83011261196d5761196c6112e6565b5b813561197d848260208601611918565b91505092915050565b5f805f806080858703121561199e5761199d611203565b5b5f6119ab878288016114d9565b94505060206119bc8782880161184a565b93505060406119cd87828801611533565b925050606085013567ffffffffffffffff8111156119ee576119ed611207565b5b6119fa87828801611959565b91505092959194509250565b5f602082019050611a195f8301846116c7565b92915050565b5f602082019050611a325f8301846116a0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a6e8161128b565b8114611a78575f80fd5b50565b5f81359050611a8981611a65565b92915050565b5f60208284031215611aa457611aa3611203565b5b5f611ab184828501611a7b565b91505092915050565b5f67ffffffffffffffff821115611ad457611ad3611862565b5b602082029050602081019050919050565b5f611af7611af284611aba565b6118c0565b90508083825260208201905060208402830185811115611b1a57611b196112ee565b5b835b81811015611b435780611b2f8882611533565b845260208401935050602081019050611b1c565b5050509392505050565b5f82601f830112611b6157611b606112e6565b5b8135611b71848260208601611ae5565b91505092915050565b5f611b84826114ed565b9050919050565b611b9481611b7a565b8114611b9e575f80fd5b50565b5f81359050611baf81611b8b565b92915050565b5f8060408385031215611bcb57611bca611203565b5b5f83013567ffffffffffffffff811115611be857611be7611207565b5b611bf485828601611b4d565b9250506020611c0585828601611ba1565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c2c57611c2b611c0f565b5b611c3660406118c0565b90505f82013567ffffffffffffffff811115611c5557611c54611c13565b5b611c6184828501611959565b5f83015250602082013567ffffffffffffffff811115611c8457611c83611c13565b5b611c9084828501611959565b60208301525092915050565b5f60208284031215611cb157611cb0611203565b5b5f82013567ffffffffffffffff811115611cce57611ccd611207565b5b611cda84828501611c17565b91505092915050565b5f81519050611cf18161151d565b92915050565b5f611d09611d04846118da565b6118c0565b905082815260208101848484011115611d2557611d2461185e565b5b611d3084828561164a565b509392505050565b5f82601f830112611d4c57611d4b6112e6565b5b8151611d5c848260208601611cf7565b91505092915050565b5f81519050611d7381611834565b92915050565b5f60608284031215611d8e57611d8d611c0f565b5b611d9860606118c0565b90505f611da784828501611ce3565b5f83015250602082015167ffffffffffffffff811115611dca57611dc9611c13565b5b611dd684828501611d38565b6020830152506040611dea84828501611d65565b60408301525092915050565b5f60208284031215611e0b57611e0a611203565b5b5f82015167ffffffffffffffff811115611e2857611e27611207565b5b611e3484828501611d79565b91505092915050565b611e4681611828565b82525050565b5f604082019050611e5f5f830185611e3d565b611e6c60208301846116a0565b9392505050565b5f60a082019050611e865f8301886116c7565b611e9360208301876116a0565b611ea06040830186611e3d565b611ead60608301856116af565b611eba60808301846116c7565b969550505050505056fea2646970667358221220df7e7dceed473a00c9aa36f5d0e419cf9b288b3195c47bc070ff38cb5ac9d20064736f6c634300081a0033",q5="0x6080604052600436106100f2575f3560e01c8063736c0d5b11610089578063d3de6e7511610058578063d3de6e75146102b8578063f04e283e146102f4578063f2fde38b14610310578063fee81cf41461032c576100f2565b8063736c0d5b146101fa57806384b0196e146102365780638da5cb5b14610266578063a1d2756f14610290576100f2565b8063439fab91116100c5578063439fab911461018e57806354d1f13d146101b6578063703b6900146101c0578063715018a6146101f0576100f2565b806301ffc9a7146100f6578063256929621461013257806328d6183b1461013c5780634359d28a14610166575b5f80fd5b348015610101575f80fd5b5061011c60048036038101906101179190611260565b610368565b60405161012991906112a5565b60405180910390f35b61013a6103e1565b005b348015610147575f80fd5b50610150610432565b60405161015d91906112cd565b60405180910390f35b348015610171575f80fd5b5061018c6004803603810190610187919061139c565b610459565b005b348015610199575f80fd5b506101b460048036038101906101af919061146f565b610562565b005b6101be610710565b005b6101da60048036038101906101d59190611547565b610749565b6040516101e791906112a5565b60405180910390f35b6101f861093c565b005b348015610205575f80fd5b50610220600480360381019061021b91906115cb565b61094f565b60405161022d91906112a5565b60405180910390f35b348015610241575f80fd5b5061024a61096b565b60405161025d979695949392919061178d565b60405180910390f35b348015610271575f80fd5b5061027a6109b6565b604051610287919061180f565b60405180910390f35b34801561029b575f80fd5b506102b660048036038101906102b191906115cb565b6109de565b005b3480156102c3575f80fd5b506102de60048036038101906102d99190611986565b610a29565b6040516102eb9190611a06565b60405180910390f35b61030e600480360381019061030991906115cb565b610a92565b005b61032a600480360381019061032591906115cb565b610ad0565b005b348015610337575f80fd5b50610352600480360381019061034d91906115cb565b610af9565b60405161035f9190611a1f565b60405180910390f35b5f7fb8ce7b22000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103da57506103d982610b12565b5b9050919050565b5f6103ea610b8b565b67ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b5f7fb8ce7b2200000000000000000000000000000000000000000000000000000000905090565b610461610b95565b8181905084849050146104a0576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561055b578282828181106104c0576104bf611a38565b5b90506020020160208101906104d59190611a8f565b5f808787858181106104ea576104e9611a38565b5b90506020020160208101906104ff91906115cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506104a2565b5050505050565b5f61056b610bcc565b9050805460038255801561059d5760018160011c14303b106105945763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8084848101906105af9190611bb5565b915091506105d6825f815181106105c9576105c8611a38565b5b6020026020010151610bf5565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5b825181101561069c5760015f8085848151811061063857610637611a38565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610618565b507f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c816040516106cc919061180f565b60405180910390a15050801561070b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f83838101906107e09190611c9c565b90505f815f01518060200190518101906107fa9190611df6565b90505f610811898360400151898660200151610a29565b905087826040015160ff1611610864578160400151886040517f17c66bc700000000000000000000000000000000000000000000000000000000815260040161085b929190611e4c565b60405180910390fd5b5f80835f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166108e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fc81896001610ccb9092919063ffffffff16565b61092e818360200151845f015173ffffffffffffffffffffffffffffffffffffffff16610d309092919063ffffffff16565b935050505095945050505050565b610944610b95565b61094d5f610e33565b565b5f602052805f5260405f205f915054906101000a900460ff1681565b5f6060805f805f60607f0f00000000000000000000000000000000000000000000000000000000000000965061099f610ef9565b809650819750505046935030925090919293949596565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754905090565b6109e6610b95565b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610a887ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f8686868680519060200120604051602001610a6d959493929190611e73565b60405160208183030381529060405280519060200120610f70565b9050949350505050565b610a9a610b95565b63389a75e1600c52805f526020600c208054421115610ac057636f5e88185f526004601cfd5b5f815550610acd81610e33565b50565b610ad8610b95565b8060601b610aed57637448fbae5f526004601cfd5b610af681610e33565b50565b5f63389a75e1600c52815f526020600c20549050919050565b5f7f5912b89c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b845750610b8382610fec565b5b9050919050565b5f6202a300905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610bca576382b429005f526004601cfd5b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011325f1b905090565b610bfd611065565b15610c75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805415610c3757630dc149f05f526004601cfd5b8160601b60601c9150811560ff1b82178155815f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a350610cc8565b8060601b60601c9050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392755805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35b50565b5f633f57fc5c60e01b90505f634de1225a60e01b90506007831115610cf657815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610d2357835f528560045260245ffd5b8183555050505050505050565b5f8360601b60601c93508315610e2c57604051835f5260208301516040526040835103610d9d576040830151601b8160ff1c016020528060011b60011c6060526020600160805f60015afa805187183d1517610d9a57600193505f60605282604052505050610e2c565b50505b6041835103610de35760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610de157600192505f606052816040525050610e2c565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa5060208260443d01868b5afa83835114169450505050505b9392505050565b610e3b611065565b15610ea0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3811560ff1b8217815550610ef6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278160601b60601c91508181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3818155505b50565b6060806040518060400160405280600f81526020017f5369676e657256616c696461746f72000000000000000000000000000000000081525091506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525090509091565b5f610f79611069565b15610f8d57610f86611071565b9050610fc9565b7f00000000000000000000000000000000000000000000000000000000000000009050610fb8611139565b15610fc857610fc5611071565b90505b5b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b5f7f6ab67a0d000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061105e575061105d82611191565b5b9050919050565b5f90565b5f6001905090565b5f8061107b611069565b156110a9575f8061108a610ef9565b91509150818051906020012093508080519060200120925050506110f0565b7f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090505b6040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815282602082015281604082015246606082015230608082015260a081209250505090565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f7f0000000000000000000000000000000000000000000000000000000000000000905080301482461416159250505090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61123f8161120b565b8114611249575f80fd5b50565b5f8135905061125a81611236565b92915050565b5f6020828403121561127557611274611203565b5b5f6112828482850161124c565b91505092915050565b5f8115159050919050565b61129f8161128b565b82525050565b5f6020820190506112b85f830184611296565b92915050565b6112c78161120b565b82525050565b5f6020820190506112e05f8301846112be565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611307576113066112e6565b5b8235905067ffffffffffffffff811115611324576113236112ea565b5b6020830191508360208202830111156113405761133f6112ee565b5b9250929050565b5f8083601f84011261135c5761135b6112e6565b5b8235905067ffffffffffffffff811115611379576113786112ea565b5b602083019150836020820283011115611395576113946112ee565b5b9250929050565b5f805f80604085870312156113b4576113b3611203565b5b5f85013567ffffffffffffffff8111156113d1576113d0611207565b5b6113dd878288016112f2565b9450945050602085013567ffffffffffffffff811115611400576113ff611207565b5b61140c87828801611347565b925092505092959194509250565b5f8083601f84011261142f5761142e6112e6565b5b8235905067ffffffffffffffff81111561144c5761144b6112ea565b5b602083019150836001820283011115611468576114676112ee565b5b9250929050565b5f806020838503121561148557611484611203565b5b5f83013567ffffffffffffffff8111156114a2576114a1611207565b5b6114ae8582860161141a565b92509250509250929050565b5f819050919050565b6114cc816114ba565b81146114d6575f80fd5b50565b5f813590506114e7816114c3565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611516826114ed565b9050919050565b6115268161150c565b8114611530575f80fd5b50565b5f813590506115418161151d565b92915050565b5f805f805f608086880312156115605761155f611203565b5b5f61156d888289016114d9565b955050602061157e888289016114d9565b945050604061158f88828901611533565b935050606086013567ffffffffffffffff8111156115b0576115af611207565b5b6115bc8882890161141a565b92509250509295509295909350565b5f602082840312156115e0576115df611203565b5b5f6115ed84828501611533565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61162a816115f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61167282611630565b61167c818561163a565b935061168c81856020860161164a565b61169581611658565b840191505092915050565b6116a9816114ba565b82525050565b6116b88161150c565b82525050565b5f819050919050565b6116d0816116be565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611708816114ba565b82525050565b5f61171983836116ff565b60208301905092915050565b5f602082019050919050565b5f61173b826116d6565b61174581856116e0565b9350611750836116f0565b805f5b83811015611780578151611767888261170e565b975061177283611725565b925050600181019050611753565b5085935050505092915050565b5f60e0820190506117a05f83018a611621565b81810360208301526117b28189611668565b905081810360408301526117c68188611668565b90506117d560608301876116a0565b6117e260808301866116af565b6117ef60a08301856116c7565b81810360c08301526118018184611731565b905098975050505050505050565b5f6020820190506118225f8301846116af565b92915050565b5f60ff82169050919050565b61183d81611828565b8114611847575f80fd5b50565b5f8135905061185881611834565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61189882611658565b810181811067ffffffffffffffff821117156118b7576118b6611862565b5b80604052505050565b5f6118c96111fa565b90506118d5828261188f565b919050565b5f67ffffffffffffffff8211156118f4576118f3611862565b5b6118fd82611658565b9050602081019050919050565b828183375f83830152505050565b5f61192a611925846118da565b6118c0565b9050828152602081018484840111156119465761194561185e565b5b61195184828561190a565b509392505050565b5f82601f83011261196d5761196c6112e6565b5b813561197d848260208601611918565b91505092915050565b5f805f806080858703121561199e5761199d611203565b5b5f6119ab878288016114d9565b94505060206119bc8782880161184a565b93505060406119cd87828801611533565b925050606085013567ffffffffffffffff8111156119ee576119ed611207565b5b6119fa87828801611959565b91505092959194509250565b5f602082019050611a195f8301846116c7565b92915050565b5f602082019050611a325f8301846116a0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b611a6e8161128b565b8114611a78575f80fd5b50565b5f81359050611a8981611a65565b92915050565b5f60208284031215611aa457611aa3611203565b5b5f611ab184828501611a7b565b91505092915050565b5f67ffffffffffffffff821115611ad457611ad3611862565b5b602082029050602081019050919050565b5f611af7611af284611aba565b6118c0565b90508083825260208201905060208402830185811115611b1a57611b196112ee565b5b835b81811015611b435780611b2f8882611533565b845260208401935050602081019050611b1c565b5050509392505050565b5f82601f830112611b6157611b606112e6565b5b8135611b71848260208601611ae5565b91505092915050565b5f611b84826114ed565b9050919050565b611b9481611b7a565b8114611b9e575f80fd5b50565b5f81359050611baf81611b8b565b92915050565b5f8060408385031215611bcb57611bca611203565b5b5f83013567ffffffffffffffff811115611be857611be7611207565b5b611bf485828601611b4d565b9250506020611c0585828601611ba1565b9150509250929050565b5f80fd5b5f80fd5b5f60408284031215611c2c57611c2b611c0f565b5b611c3660406118c0565b90505f82013567ffffffffffffffff811115611c5557611c54611c13565b5b611c6184828501611959565b5f83015250602082013567ffffffffffffffff811115611c8457611c83611c13565b5b611c9084828501611959565b60208301525092915050565b5f60208284031215611cb157611cb0611203565b5b5f82013567ffffffffffffffff811115611cce57611ccd611207565b5b611cda84828501611c17565b91505092915050565b5f81519050611cf18161151d565b92915050565b5f611d09611d04846118da565b6118c0565b905082815260208101848484011115611d2557611d2461185e565b5b611d3084828561164a565b509392505050565b5f82601f830112611d4c57611d4b6112e6565b5b8151611d5c848260208601611cf7565b91505092915050565b5f81519050611d7381611834565b92915050565b5f60608284031215611d8e57611d8d611c0f565b5b611d9860606118c0565b90505f611da784828501611ce3565b5f83015250602082015167ffffffffffffffff811115611dca57611dc9611c13565b5b611dd684828501611d38565b6020830152506040611dea84828501611d65565b60408301525092915050565b5f60208284031215611e0b57611e0a611203565b5b5f82015167ffffffffffffffff811115611e2857611e27611207565b5b611e3484828501611d79565b91505092915050565b611e4681611828565b82525050565b5f604082019050611e5f5f830185611e3d565b611e6c60208301846116a0565b9392505050565b5f60a082019050611e865f8301886116c7565b611e9360208301876116a0565b611ea06040830186611e3d565b611ead60608301856116af565b611eba60808301846116c7565b969550505050505056fea2646970667358221220df7e7dceed473a00c9aa36f5d0e419cf9b288b3195c47bc070ff38cb5ac9d20064736f6c634300081a0033",F5={},U5={},n0={_format:H5,contractName:D5,sourceName:B5,abi:S5,bytecode:V5,deployedBytecode:q5,linkReferences:F5,deployedLinkReferences:U5};function P5(i,s,a){const n=i[s.name];if(typeof n=="function")return n;const r=i[a];return typeof r=="function"?r:p=>s(i,p)}async function G5(i,s={}){let a;if(s.connector){const{connector:e}=s;if(i.state.status==="reconnecting"&&!e.getAccounts&&!e.getChainId)throw new y.ConnectorUnavailableReconnectingError({connector:e});const[d,x]=await Promise.all([e.getAccounts(),e.getChainId()]);a={accounts:d,chainId:x,connector:e}}else a=i.state.connections.get(i.state.current);if(!a)throw new y.ConnectorNotConnectedError;const n=s.chainId??a.chainId,r=await a.connector.getChainId();if(r!==a.chainId)throw new y.ConnectorChainMismatchError({connectionChainId:a.chainId,connectorChainId:r});const p=a.connector;if(p.getClient)return p.getClient({chainId:n});const c=y.parseAccount(s.account??a.accounts[0]);if(c.address=y.getAddress(c.address),s.account&&!a.accounts.some(e=>e.toLowerCase()===c.address.toLowerCase()))throw new y.ConnectorAccountNotFoundError({address:c.address,connector:p});const O=i.chains.find(e=>e.id===n),f=await a.connector.getProvider({chainId:n});return y.createClient({account:c,chain:O,name:"Connector Client",transport:e=>y.custom(f)({...e,retryCount:0})})}async function t(i,s){const{account:a,chainId:n,connector:r,...p}=s;let c;return typeof a=="object"&&a.type==="local"?c=i.getClient({chainId:n}):c=await G5(i,{account:a,chainId:n,connector:r}),await P5(c,y.deployContract,"deployContract")({...p,...a?{account:a}:{},chain:n?{id:n}:null})}const Z5=async function(s,a){var u,o,l,m,T,v,w,M,I,h,A,g,R;const n=a.privateKey,r=a.mnemonic,p=a.chain;if(!n&&!r)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!p||!y.Chains[p])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,O]=y.getDeployableOptions({chain:p,privateKey:n,mnemonic:r}),{config:f,account:e}=c,d=O.id,x=await new b.BoostRegistry({address:null,...c}).deploy(),z=class z extends b.BoostRegistry{};z.addresses={[d]:x.assertValidAddress()};let C=z;const _=new C({...c,address:x.assertValidAddress()}),c0=await new b.BoostCore({...c,registryAddress:_.assertValidAddress(),protocolFeeReceiver:e.address,owner:e.address}).deploy(),i0=await b.getDeployedContractAddress(f,t(f,{abi:P.abi,bytecode:P.bytecode,account:e})),s0=await b.getDeployedContractAddress(f,t(f,{abi:G.abi,bytecode:G.bytecode,account:e})),N=await b.getDeployedContractAddress(f,t(f,{abi:W.abi,bytecode:W.bytecode,account:e})),E=await b.getDeployedContractAddress(f,t(f,{abi:j.abi,bytecode:j.bytecode,account:e})),$=await b.getDeployedContractAddress(f,t(f,{abi:K.abi,bytecode:K.bytecode,account:e})),p0=await b.getDeployedContractAddress(f,t(f,{abi:Q.abi,bytecode:Q.bytecode,account:e})),y0=await b.getDeployedContractAddress(f,t(f,{abi:Y.abi,bytecode:Y.bytecode,account:e})),k=await b.getDeployedContractAddress(f,t(f,{abi:J.abi,bytecode:J.bytecode,account:e})),L=await b.getDeployedContractAddress(f,t(f,{abi:X.abi,bytecode:X.bytecode,account:e})),H=await b.getDeployedContractAddress(f,t(f,{abi:f0.abi,bytecode:f0.bytecode,account:e})),r0=await b.getDeployedContractAddress(f,t(f,{abi:a0.abi,bytecode:a0.bytecode,account:e})),D=await b.getDeployedContractAddress(f,t(f,{abi:Z.abi,bytecode:Z.bytecode,account:e})),B=await b.getDeployedContractAddress(f,t(f,{abi:d0.abi,bytecode:d0.bytecode,account:e})),S=await b.getDeployedContractAddress(f,t(f,{abi:e0.abi,bytecode:e0.bytecode,account:e})),V=await b.getDeployedContractAddress(f,t(f,{abi:b0.abi,bytecode:b0.bytecode,account:e})),q=await b.getDeployedContractAddress(f,t(f,{abi:n0.abi,bytecode:n0.bytecode,account:e})),F=await b.getDeployedContractAddress(f,t(f,{abi:t0.abi,bytecode:t0.bytecode,account:e})),u0={EventAction:(u=class extends b.EventAction{},u.bases={[d]:D},u),SimpleAllowList:(o=class extends b.SimpleAllowList{},o.bases={[d]:N},o),SimpleDenyList:(l=class extends b.SimpleDenyList{},l.bases={[d]:E},l),ManagedBudget:(m=class extends b.ManagedBudget{},m.bases={[d]:$},m),ManagedBudgetWithFees:(T=class extends b.ManagedBudgetWithFees{},T.bases={[d]:p0},T),AllowListIncentive:(v=class extends b.AllowListIncentive{},v.bases={[d]:k},v),CGDAIncentive:(w=class extends b.CGDAIncentive{},w.bases={[d]:L},w),ERC20Incentive:(M=class extends b.ERC20Incentive{},M.bases={[d]:H},M),ERC20VariableIncentive:(I=class extends b.ERC20VariableIncentive{},I.bases={[d]:S},I),ERC20VariableCriteriaIncentive:(h=class extends b.ERC20VariableCriteriaIncentive{},h.bases={[d]:V},h),PointsIncentive:(A=class extends b.PointsIncentive{},A.bases={[d]:B},A),SignerValidator:(g=class extends b.SignerValidator{},g.bases={[d]:q},g),LimitedSignerValidator:(R=class extends b.LimitedSignerValidator{},R.bases={[d]:F},R)};for(const[o0,U]of Object.entries(u0))await _.register(U.registryType,o0,U.bases[d]);return{BOOST_CORE_ADDRESS:c0.assertValidAddress(),BOOST_REGISTRY_ADDRESS:_.assertValidAddress(),CONTRACT_ACTION_BASE:i0,EVENT_ACTION_BASE:D,ERC721_MINT_ACTION_BASE:s0,SIMPLE_ALLOWLIST_BASE:N,SIMPLE_DENYLIST_BASE:E,MANAGED_BUDGET_BASE:$,VESTING_BUDGET_BASE:y0,ALLOWLIST_INCENTIVE_BASE:k,CGDA_INCENTIVE_BASE:L,ERC20_INCENTIVE_BASE:H,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:V,ERC1155_INCENTIVE_BASE:r0,POINTS_INCENTIVE_BASE:B,SIGNER_VALIDATOR_BASE:q,LIMITED_SIGNER_VALIDATOR_BASE:F}};exports.deploy=Z5;