[
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "fromDelegate",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toDelegate",
"type": "address"
}
],
"name": "DelegateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newBalance",
"type": "uint256"
}
],
"name": "DelegateVotesChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokenBurned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokenMinted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokenTransfered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint32",
"name": "pos",
"type": "uint32"
}
],
"name": "checkpoints",
"outputs": [
{
"components": [
{
"internalType": "uint32",
"name": "fromBlock",
"type": "uint32"
},
{
"internalType": "uint224",
"name": "votes",
"type": "uint224"
}
],
"internalType": "struct ERC20Votes.Checkpoint",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "delegateBySig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"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": "getHolderCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getPastTotalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getPastVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "holders",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "numCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "permit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]0x610160604052670de0b6b3a76400006402540be40061001e9190610dbb565b600d5534801561002c575f5ffd5b5060405161561b38038061561b833981810160405281019061004e9190610f49565b81806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508484816003908161009791906111c6565b5080600490816100a791906111c6565b5050506100be60058361018a60201b90919060201c565b61012081815250506100da60068261018a60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506101176101d760201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050505061017161016661023160201b60201c565b61023860201b60201c565b61018333600d546102fb60201b60201c565b505061178d565b5f6020835110156101ab576101a48361035d60201b60201c565b90506101d1565b826101bb836103c260201b60201c565b5f0190816101c991906111c6565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016102169594939291906112fb565b60405160208183030381529060405280519060200120905090565b5f33905090565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61030b82826103cb60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a882604051610351919061134c565b60405180910390a25050565b5f5f829050601f815111156103a957826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016103a091906113ad565b60405180910390fd5b8051816103b5906113fa565b5f1c175f1b915050919050565b5f819050919050565b6103db828261047760201b60201c565b6103e96105d160201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166104156105f460201b60201c565b1115610456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044d906114d0565b60405180910390fd5b610471600b6105fd60201b61125b178361061260201b60201c565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dc90611538565b60405180910390fd5b6104f65f838361090260201b60201c565b8060025f8282546105079190611556565b92505081905550805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b4919061134c565b60405180910390a36105cd5f838361090760201b60201c565b5050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b5f600254905090565b5f818361060a9190611556565b905092915050565b5f5f5f858054905090505f5f82146106d857610637876001840361098260201b60201c565b6040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050610712565b60405180604001604052805f63ffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061074484868860201c565b92505f82118015610772575061075e61099460201b60201c565b65ffffffffffff16815f015163ffffffff16145b156107ee57610786836109a960201b60201c565b610799886001850361098260201b60201c565b5f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055506108f8565b86604051806040016040528061081e61080b61099460201b60201c565b65ffffffffffff16610a1360201b60201c565b63ffffffff168152602001610838866109a960201b60201c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b505050565b610918838383610a6560201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fec61728879a33aa50b55e1f4789dcfc1c680f30a24d7b8694a9f874e242a97b483604051610975919061134c565b60405180910390a3505050565b5f825f528160205f2001905092915050565b5f6109a442610aa860201b60201c565b905090565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a02906115f9565b60405180910390fd5b819050919050565b5f63ffffffff8016821115610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490611687565b60405180910390fd5b819050919050565b610a76838383610afc60201b60201c565b610aa3610a8884610b0160201b60201c565b610a9784610b0160201b60201c565b83610b6660201b60201c565b505050565b5f65ffffffffffff8016821115610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611715565b60405180910390fd5b819050919050565b505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ba157505f81115b15610d6b575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610c88575f5f610c31600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20610d7060201b611270178561061260201b60201c565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051610c7d929190611733565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610d6a575f5f610d13600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206105fd60201b61125b178561061260201b60201c565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051610d5f929190611733565b60405180910390a250505b5b505050565b5f8183610d7d919061175a565b905092915050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610dc582610d85565b9150610dd083610d85565b9250828202610dde81610d85565b91508282048414831517610df557610df4610d8e565b5b5092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610e5b82610e15565b810181811067ffffffffffffffff82111715610e7a57610e79610e25565b5b80604052505050565b5f610e8c610dfc565b9050610e988282610e52565b919050565b5f67ffffffffffffffff821115610eb757610eb6610e25565b5b610ec082610e15565b9050602081019050919050565b8281835e5f83830152505050565b5f610eed610ee884610e9d565b610e83565b905082815260208101848484011115610f0957610f08610e11565b5b610f14848285610ecd565b509392505050565b5f82601f830112610f3057610f2f610e0d565b5b8151610f40848260208601610edb565b91505092915050565b5f5f60408385031215610f5f57610f5e610e05565b5b5f83015167ffffffffffffffff811115610f7c57610f7b610e09565b5b610f8885828601610f1c565b925050602083015167ffffffffffffffff811115610fa957610fa8610e09565b5b610fb585828601610f1c565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061100d57607f821691505b6020821081036110205761101f610fc9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026110827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611047565b61108c8683611047565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6110c76110c26110bd84610d85565b6110a4565b610d85565b9050919050565b5f819050919050565b6110e0836110ad565b6110f46110ec826110ce565b848454611053565b825550505050565b5f5f905090565b61110b6110fc565b6111168184846110d7565b505050565b5b818110156111395761112e5f82611103565b60018101905061111c565b5050565b601f82111561117e5761114f81611026565b61115884611038565b81016020851015611167578190505b61117b61117385611038565b83018261111b565b50505b505050565b5f82821c905092915050565b5f61119e5f1984600802611183565b1980831691505092915050565b5f6111b6838361118f565b9150826002028217905092915050565b6111cf82610fbf565b67ffffffffffffffff8111156111e8576111e7610e25565b5b6111f28254610ff6565b6111fd82828561113d565b5f60209050601f83116001811461122e575f841561121c578287015190505b61122685826111ab565b86555061128d565b601f19841661123c86611026565b5f5b828110156112635784890151825560018201915060208501945060208101905061123e565b86831015611280578489015161127c601f89168261118f565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b6112a781611295565b82525050565b6112b681610d85565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112e5826112bc565b9050919050565b6112f5816112db565b82525050565b5f60a08201905061130e5f83018861129e565b61131b602083018761129e565b611328604083018661129e565b61133560608301856112ad565b61134260808301846112ec565b9695505050505050565b5f60208201905061135f5f8301846112ad565b92915050565b5f82825260208201905092915050565b5f61137f82610fbf565b6113898185611365565b9350611399818560208601610ecd565b6113a281610e15565b840191505092915050565b5f6020820190508181035f8301526113c58184611375565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f6113f18251611295565b80915050919050565b5f611404826113cd565b8261140e846113d7565b9050611419816113e6565b92506020821015611459576114547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611047565b831692505b5050919050565b7f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f5f8201527f766572666c6f77696e6720766f74657300000000000000000000000000000000602082015250565b5f6114ba603083611365565b91506114c582611460565b604082019050919050565b5f6020820190508181035f8301526114e7816114ae565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611522601f83611365565b915061152d826114ee565b602082019050919050565b5f6020820190508181035f83015261154f81611516565b9050919050565b5f61156082610d85565b915061156b83610d85565b925082820190508082111561158357611582610d8e565b5b92915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20325f8201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b5f6115e3602783611365565b91506115ee82611589565b604082019050919050565b5f6020820190508181035f830152611610816115d7565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20335f8201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b5f611671602683611365565b915061167c82611617565b604082019050919050565b5f6020820190508181035f83015261169e81611665565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20345f8201527f3820626974730000000000000000000000000000000000000000000000000000602082015250565b5f6116ff602683611365565b915061170a826116a5565b604082019050919050565b5f6020820190508181035f83015261172c816116f3565b9050919050565b5f6040820190506117465f8301856112ad565b61175360208301846112ad565b9392505050565b5f61176482610d85565b915061176f83610d85565b925082820390508181111561178757611786610d8e565b5b92915050565b60805160a05160c05160e051610100516101205161014051613e3d6117de5f395f610a9301525f610a5f01525f611e4d01525f611e2c01525f61174901525f61179f01525f6117c80152613e3d5ff3fe608060405234801561000f575f5ffd5b50600436106101e3575f3560e01c80637136982b1161010d5780639ab24eb0116100a0578063d505accf1161006f578063d505accf146105e9578063dd62ed3e14610605578063f1127ed814610635578063f2fde38b14610665576101e3565b80639ab24eb01461053d578063a457c2d71461056d578063a9059cbb1461059d578063c3cda520146105cd576101e3565b80638da5cb5b116100dc5780638da5cb5b146104b35780638e539e8c146104d157806391ddadf41461050157806395d89b411461051f576101e3565b80637136982b14610437578063715018a6146104555780637ecebe001461045f57806384b0196e1461048f576101e3565b80633644e51511610185578063587cde1e11610154578063587cde1e1461038b5780635c19a95c146103bb5780636fcfff45146103d757806370a0823114610407576101e3565b80633644e515146102ef578063395093511461030d5780633a46b1a81461033d5780634bf5d7e91461036d576101e3565b806323b872dd116101c157806323b872dd146102535780632a11ced014610283578063313ce567146102b357806332cb6b0c146102d1576101e3565b806306fdde03146101e7578063095ea7b31461020557806318160ddd14610235575b5f5ffd5b6101ef610681565b6040516101fc9190612a09565b60405180910390f35b61021f600480360381019061021a9190612aba565b610711565b60405161022c9190612b12565b60405180910390f35b61023d610733565b60405161024a9190612b3a565b60405180910390f35b61026d60048036038101906102689190612b53565b61073c565b60405161027a9190612b12565b60405180910390f35b61029d60048036038101906102989190612ba3565b61076a565b6040516102aa9190612bdd565b60405180910390f35b6102bb6107a5565b6040516102c89190612c11565b60405180910390f35b6102d96107ad565b6040516102e69190612b3a565b60405180910390f35b6102f76107b3565b6040516103049190612c42565b60405180910390f35b61032760048036038101906103229190612aba565b6107c1565b6040516103349190612b12565b60405180910390f35b61035760048036038101906103529190612aba565b6107f7565b6040516103649190612b3a565b60405180910390f35b610375610897565b6040516103829190612a09565b60405180910390f35b6103a560048036038101906103a09190612c5b565b6108d4565b6040516103b29190612bdd565b60405180910390f35b6103d560048036038101906103d09190612c5b565b610939565b005b6103f160048036038101906103ec9190612c5b565b61094d565b6040516103fe9190612ca4565b60405180910390f35b610421600480360381019061041c9190612c5b565b61099e565b60405161042e9190612b3a565b60405180910390f35b61043f6109e3565b60405161044c9190612b3a565b60405180910390f35b61045d6109ef565b005b61047960048036038101906104749190612c5b565b610a02565b6040516104869190612b3a565b60405180910390f35b610497610a4f565b6040516104aa9796959493929190612dae565b60405180910390f35b6104bb610b4c565b6040516104c89190612bdd565b60405180910390f35b6104eb60048036038101906104e69190612ba3565b610b74565b6040516104f89190612b3a565b60405180910390f35b610509610bd8565b6040516105169190612e50565b60405180910390f35b610527610be7565b6040516105349190612a09565b60405180910390f35b61055760048036038101906105529190612c5b565b610c77565b6040516105649190612b3a565b60405180910390f35b61058760048036038101906105829190612aba565b610d75565b6040516105949190612b12565b60405180910390f35b6105b760048036038101906105b29190612aba565b610dea565b6040516105c49190612b12565b60405180910390f35b6105e760048036038101906105e29190612ebd565b610e0c565b005b61060360048036038101906105fe9190612f46565b610f0f565b005b61061f600480360381019061061a9190612fe3565b61104e565b60405161062c9190612b3a565b60405180910390f35b61064f600480360381019061064a919061304b565b6110d0565b60405161065c91906130fb565b60405180910390f35b61067f600480360381019061067a9190612c5b565b6111d9565b005b60606003805461069090613141565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90613141565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f5f61071b611285565b905061072881858561128c565b600191505092915050565b5f600254905090565b5f5f610746611285565b905061075385828561144f565b61075e8585856114da565b60019150509392505050565b600e8181548110610779575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600d5481565b5f6107bc611746565b905090565b5f5f6107cb611285565b90506107ec8185856107dd858961104e565b6107e7919061319e565b61128c565b600191505092915050565b5f610800610bd8565b65ffffffffffff168210610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061321b565b60405180910390fd5b61088f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20836117fc565b905092915050565b60606040518060400160405280600e81526020017f6d6f64653d74696d657374616d70000000000000000000000000000000000000815250905090565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61094a610944611285565b8261193c565b50565b5f610997600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050611a51565b9050919050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600e80549050905090565b6109f7611aa3565b610a005f611b21565b565b5f610a4860075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611be4565b9050919050565b5f6060805f5f5f6060610a8c60057f0000000000000000000000000000000000000000000000000000000000000000611bf090919063ffffffff16565b610ac060067f0000000000000000000000000000000000000000000000000000000000000000611bf090919063ffffffff16565b46305f5f1b5f67ffffffffffffffff811115610adf57610ade613239565b5b604051908082528060200260200182016040528015610b0d5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610b7d610bd8565b65ffffffffffff168210610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd9061321b565b60405180910390fd5b610bd1600b836117fc565b9050919050565b5f610be242611c9d565b905090565b606060048054610bf690613141565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2290613141565b8015610c6d5780601f10610c4457610100808354040283529160200191610c6d565b820191905f5260205f20905b815481529060010190602001808311610c5057829003601f168201915b5050505050905090565b5f5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905090505f8114610d4d57600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001820381548110610d1557610d14613266565b5b905f5260205f20015f0160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d4f565b5f5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b5f5f610d7f611285565b90505f610d8c828661104e565b905083811015610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890613303565b60405180910390fd5b610dde828686840361128c565b60019250505092915050565b5f5f610df4611285565b9050610e018185856114da565b600191505092915050565b83421115610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e469061336b565b60405180910390fd5b5f610eb0610ea87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610e8d9493929190613389565b60405160208183030381529060405280519060200120611cf1565b858585611d0a565b9050610ebb81611d33565b8614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613416565b60405180910390fd5b610f06818861193c565b50505050505050565b83421115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061347e565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f808c611d33565b89604051602001610f969695949392919061349c565b6040516020818303038152906040528051906020012090505f610fb882611cf1565b90505f610fc782878787611d0a565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613545565b60405180910390fd5b6110428a8a8a61128c565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110d861295d565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208263ffffffff168154811061112d5761112c613266565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b6111e1611aa3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906135d3565b60405180910390fd5b61125881611b21565b50565b5f8183611268919061319e565b905092915050565b5f818361127d91906135f1565b905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613694565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90613722565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114429190612b3a565b60405180910390a3505050565b5f61145a848461104e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114d457818110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061378a565b60405180910390fd5b6114d3848484840361128c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613818565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad906138a6565b60405180910390fd5b6115c1838383611d8e565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613934565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161172d9190612b3a565b60405180910390a3611740848484611d93565b50505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156117c157507f000000000000000000000000000000000000000000000000000000000000000046145b156117ee577f000000000000000000000000000000000000000000000000000000000000000090506117f9565b6117f6611e08565b90505b90565b5f5f838054905090505f5f90505f8290506005831115611870575f61182084611e9d565b8461182b91906135f1565b9050856118388883611f93565b5f015f9054906101000a900463ffffffff1663ffffffff16111561185e5780915061186e565b60018161186b919061319e565b92505b505b5b808210156118cd575f6118848383611fa5565b9050856118918883611f93565b5f015f9054906101000a900463ffffffff1663ffffffff1611156118b7578091506118c7565b6001816118c4919061319e565b92505b50611871565b5f8114611911576118e18660018303611f93565b5f0160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611913565b5f5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935050505092915050565b5f611946836108d4565b90505f6119528461099e565b90508260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611a4b828483611fca565b50505050565b5f63ffffffff8016821115611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a92906139c2565b60405180910390fd5b819050919050565b611aab611285565b73ffffffffffffffffffffffffffffffffffffffff16611ac9610b4c565b73ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613a2a565b60405180910390fd5b565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f815f01549050919050565b606060ff5f1b8314611c0c57611c05836121ba565b9050611c97565b818054611c1890613141565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4490613141565b8015611c8f5780601f10611c6657610100808354040283529160200191611c8f565b820191905f5260205f20905b815481529060010190602001808311611c7257829003601f168201915b505050505090505b92915050565b5f65ffffffffffff8016821115611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce090613ab8565b60405180910390fd5b819050919050565b5f611d03611cfd611746565b8361222c565b9050919050565b5f5f5f611d198787878761226c565b91509150611d2681612344565b8192505050949350505050565b5f5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050611d7d81611be4565b9150611d88816124a9565b50919050565b505050565b611d9e8383836124bd565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fec61728879a33aa50b55e1f4789dcfc1c680f30a24d7b8694a9f874e242a97b483604051611dfb9190612b3a565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611e82959493929190613ad6565b60405160208183030381529060405280519060200120905090565b5f5f8203611ead575f9050611f8e565b5f6001611eb9846124e8565b901c6001901b90506001818481611ed357611ed2613b27565b5b048201901c90506001818481611eec57611eeb613b27565b5b048201901c90506001818481611f0557611f04613b27565b5b048201901c90506001818481611f1e57611f1d613b27565b5b048201901c90506001818481611f3757611f36613b27565b5b048201901c90506001818481611f5057611f4f613b27565b5b048201901c90506001818481611f6957611f68613b27565b5b048201901c9050611f8a81828581611f8457611f83613b27565b5b046125bf565b9150505b919050565b5f825f528160205f2001905092915050565b5f6002828418611fb59190613b54565b828416611fc2919061319e565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561200557505f81115b156121b5575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120df575f5f612088600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611270856125d7565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120d4929190613b84565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121b4575f5f61215d600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061125b856125d7565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121a9929190613b84565b60405180910390a250505b5b505050565b60605f6121c6836128a0565b90505f602067ffffffffffffffff8111156121e4576121e3613239565b5b6040519080825280601f01601f1916602001820160405280156122165781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0835f1c11156122a4575f60039150915061233b565b5f6001878787876040515f81526020016040526040516122c79493929190613bab565b6020604051602081039080840390855afa1580156122e7573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612333575f6001925092505061233b565b805f92509250505b94509492505050565b5f600481111561235757612356613bee565b5b81600481111561236a57612369613bee565b5b03156124a6576001600481111561238457612383613bee565b5b81600481111561239757612396613bee565b5b036123d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ce90613c65565b60405180910390fd5b600260048111156123eb576123ea613bee565b5b8160048111156123fe576123fd613bee565b5b0361243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590613ccd565b60405180910390fd5b6003600481111561245257612451613bee565b5b81600481111561246557612464613bee565b5b036124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613d5b565b60405180910390fd5b5b50565b6001815f015f828254019250508190555050565b6124c88383836128ee565b6124e36124d4846108d4565b6124dd846108d4565b83611fca565b505050565b5f5f5f90505f608084901c111561250757608083901c92506080810190505b5f604084901c111561252157604083901c92506040810190505b5f602084901c111561253b57602083901c92506020810190505b5f601084901c111561255557601083901c92506010810190505b5f600884901c111561256f57600883901c92506008810190505b5f600484901c111561258957600483901c92506004810190505b5f600284901c11156125a357600283901c92506002810190505b5f600184901c11156125b6576001810190505b80915050919050565b5f8183106125cd57816125cf565b825b905092915050565b5f5f5f858054905090505f5f8214612697576125f68760018403611f93565b6040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250506126d1565b60405180604001604052805f63ffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061270684868863ffffffff16565b92505f8211801561272e575061271a610bd8565b65ffffffffffff16815f015163ffffffff16145b1561279e5761273c836128f3565b6127498860018503611f93565b5f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612896565b8660405180604001604052806127c26127b5610bd8565b65ffffffffffff16611a51565b63ffffffff1681526020016127d6866128f3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b5f5f60ff835f1c169050601f8111156128e5576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613de9565b60405180910390fd5b819050919050565b60405180604001604052805f63ffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6129db82612999565b6129e581856129a3565b93506129f58185602086016129b3565b6129fe816129c1565b840191505092915050565b5f6020820190508181035f830152612a2181846129d1565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5682612a2d565b9050919050565b612a6681612a4c565b8114612a70575f5ffd5b50565b5f81359050612a8181612a5d565b92915050565b5f819050919050565b612a9981612a87565b8114612aa3575f5ffd5b50565b5f81359050612ab481612a90565b92915050565b5f5f60408385031215612ad057612acf612a29565b5b5f612add85828601612a73565b9250506020612aee85828601612aa6565b9150509250929050565b5f8115159050919050565b612b0c81612af8565b82525050565b5f602082019050612b255f830184612b03565b92915050565b612b3481612a87565b82525050565b5f602082019050612b4d5f830184612b2b565b92915050565b5f5f5f60608486031215612b6a57612b69612a29565b5b5f612b7786828701612a73565b9350506020612b8886828701612a73565b9250506040612b9986828701612aa6565b9150509250925092565b5f60208284031215612bb857612bb7612a29565b5b5f612bc584828501612aa6565b91505092915050565b612bd781612a4c565b82525050565b5f602082019050612bf05f830184612bce565b92915050565b5f60ff82169050919050565b612c0b81612bf6565b82525050565b5f602082019050612c245f830184612c02565b92915050565b5f819050919050565b612c3c81612c2a565b82525050565b5f602082019050612c555f830184612c33565b92915050565b5f60208284031215612c7057612c6f612a29565b5b5f612c7d84828501612a73565b91505092915050565b5f63ffffffff82169050919050565b612c9e81612c86565b82525050565b5f602082019050612cb75f830184612c95565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612cf181612cbd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d2981612a87565b82525050565b5f612d3a8383612d20565b60208301905092915050565b5f602082019050919050565b5f612d5c82612cf7565b612d668185612d01565b9350612d7183612d11565b805f5b83811015612da1578151612d888882612d2f565b9750612d9383612d46565b925050600181019050612d74565b5085935050505092915050565b5f60e082019050612dc15f83018a612ce8565b8181036020830152612dd381896129d1565b90508181036040830152612de781886129d1565b9050612df66060830187612b2b565b612e036080830186612bce565b612e1060a0830185612c33565b81810360c0830152612e228184612d52565b905098975050505050505050565b5f65ffffffffffff82169050919050565b612e4a81612e30565b82525050565b5f602082019050612e635f830184612e41565b92915050565b612e7281612bf6565b8114612e7c575f5ffd5b50565b5f81359050612e8d81612e69565b92915050565b612e9c81612c2a565b8114612ea6575f5ffd5b50565b5f81359050612eb781612e93565b92915050565b5f5f5f5f5f5f60c08789031215612ed757612ed6612a29565b5b5f612ee489828a01612a73565b9650506020612ef589828a01612aa6565b9550506040612f0689828a01612aa6565b9450506060612f1789828a01612e7f565b9350506080612f2889828a01612ea9565b92505060a0612f3989828a01612ea9565b9150509295509295509295565b5f5f5f5f5f5f5f60e0888a031215612f6157612f60612a29565b5b5f612f6e8a828b01612a73565b9750506020612f7f8a828b01612a73565b9650506040612f908a828b01612aa6565b9550506060612fa18a828b01612aa6565b9450506080612fb28a828b01612e7f565b93505060a0612fc38a828b01612ea9565b92505060c0612fd48a828b01612ea9565b91505092959891949750929550565b5f5f60408385031215612ff957612ff8612a29565b5b5f61300685828601612a73565b925050602061301785828601612a73565b9150509250929050565b61302a81612c86565b8114613034575f5ffd5b50565b5f8135905061304581613021565b92915050565b5f5f6040838503121561306157613060612a29565b5b5f61306e85828601612a73565b925050602061307f85828601613037565b9150509250929050565b61309281612c86565b82525050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6130c881613098565b82525050565b604082015f8201516130e25f850182613089565b5060208201516130f560208501826130bf565b50505050565b5f60408201905061310e5f8301846130ce565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061315857607f821691505b60208210810361316b5761316a613114565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131a882612a87565b91506131b383612a87565b92508282019050808211156131cb576131ca613171565b5b92915050565b7f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000005f82015250565b5f6132056019836129a3565b9150613210826131d1565b602082019050919050565b5f6020820190508181035f830152613232816131f9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6132ed6025836129a3565b91506132f882613293565b604082019050919050565b5f6020820190508181035f83015261331a816132e1565b9050919050565b7f4552433230566f7465733a207369676e617475726520657870697265640000005f82015250565b5f613355601d836129a3565b915061336082613321565b602082019050919050565b5f6020820190508181035f83015261338281613349565b9050919050565b5f60808201905061339c5f830187612c33565b6133a96020830186612bce565b6133b66040830185612b2b565b6133c36060830184612b2b565b95945050505050565b7f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000005f82015250565b5f6134006019836129a3565b915061340b826133cc565b602082019050919050565b5f6020820190508181035f83015261342d816133f4565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e650000005f82015250565b5f613468601d836129a3565b915061347382613434565b602082019050919050565b5f6020820190508181035f8301526134958161345c565b9050919050565b5f60c0820190506134af5f830189612c33565b6134bc6020830188612bce565b6134c96040830187612bce565b6134d66060830186612b2b565b6134e36080830185612b2b565b6134f060a0830184612b2b565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e617475726500005f82015250565b5f61352f601e836129a3565b915061353a826134fb565b602082019050919050565b5f6020820190508181035f83015261355c81613523565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135bd6026836129a3565b91506135c882613563565b604082019050919050565b5f6020820190508181035f8301526135ea816135b1565b9050919050565b5f6135fb82612a87565b915061360683612a87565b925082820390508181111561361e5761361d613171565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61367e6024836129a3565b915061368982613624565b604082019050919050565b5f6020820190508181035f8301526136ab81613672565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61370c6022836129a3565b9150613717826136b2565b604082019050919050565b5f6020820190508181035f83015261373981613700565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613774601d836129a3565b915061377f82613740565b602082019050919050565b5f6020820190508181035f8301526137a181613768565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6138026025836129a3565b915061380d826137a8565b604082019050919050565b5f6020820190508181035f83015261382f816137f6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6138906023836129a3565b915061389b82613836565b604082019050919050565b5f6020820190508181035f8301526138bd81613884565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61391e6026836129a3565b9150613929826138c4565b604082019050919050565b5f6020820190508181035f83015261394b81613912565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20335f8201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b5f6139ac6026836129a3565b91506139b782613952565b604082019050919050565b5f6020820190508181035f8301526139d9816139a0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a146020836129a3565b9150613a1f826139e0565b602082019050919050565b5f6020820190508181035f830152613a4181613a08565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20345f8201527f3820626974730000000000000000000000000000000000000000000000000000602082015250565b5f613aa26026836129a3565b9150613aad82613a48565b604082019050919050565b5f6020820190508181035f830152613acf81613a96565b9050919050565b5f60a082019050613ae95f830188612c33565b613af66020830187612c33565b613b036040830186612c33565b613b106060830185612b2b565b613b1d6080830184612bce565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b5e82612a87565b9150613b6983612a87565b925082613b7957613b78613b27565b5b828204905092915050565b5f604082019050613b975f830185612b2b565b613ba46020830184612b2b565b9392505050565b5f608082019050613bbe5f830187612c33565b613bcb6020830186612c02565b613bd86040830185612c33565b613be56060830184612c33565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f45434453413a20696e76616c6964207369676e617475726500000000000000005f82015250565b5f613c4f6018836129a3565b9150613c5a82613c1b565b602082019050919050565b5f6020820190508181035f830152613c7c81613c43565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e677468005f82015250565b5f613cb7601f836129a3565b9150613cc282613c83565b602082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d456022836129a3565b9150613d5082613ceb565b604082019050919050565b5f6020820190508181035f830152613d7281613d39565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20325f8201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b5f613dd36027836129a3565b9150613dde82613d79565b604082019050919050565b5f6020820190508181035f830152613e0081613dc7565b905091905056fea2646970667358221220d8a0377c3a31cca4d47ca044832f18e35c43abd53367766c4b1e1cd0c5342dee64736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044b756c610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b554c4100000000000000000000000000000000000000000000000000000000
0x608060405234801561000f575f5ffd5b50600436106101e3575f3560e01c80637136982b1161010d5780639ab24eb0116100a0578063d505accf1161006f578063d505accf146105e9578063dd62ed3e14610605578063f1127ed814610635578063f2fde38b14610665576101e3565b80639ab24eb01461053d578063a457c2d71461056d578063a9059cbb1461059d578063c3cda520146105cd576101e3565b80638da5cb5b116100dc5780638da5cb5b146104b35780638e539e8c146104d157806391ddadf41461050157806395d89b411461051f576101e3565b80637136982b14610437578063715018a6146104555780637ecebe001461045f57806384b0196e1461048f576101e3565b80633644e51511610185578063587cde1e11610154578063587cde1e1461038b5780635c19a95c146103bb5780636fcfff45146103d757806370a0823114610407576101e3565b80633644e515146102ef578063395093511461030d5780633a46b1a81461033d5780634bf5d7e91461036d576101e3565b806323b872dd116101c157806323b872dd146102535780632a11ced014610283578063313ce567146102b357806332cb6b0c146102d1576101e3565b806306fdde03146101e7578063095ea7b31461020557806318160ddd14610235575b5f5ffd5b6101ef610681565b6040516101fc9190612a09565b60405180910390f35b61021f600480360381019061021a9190612aba565b610711565b60405161022c9190612b12565b60405180910390f35b61023d610733565b60405161024a9190612b3a565b60405180910390f35b61026d60048036038101906102689190612b53565b61073c565b60405161027a9190612b12565b60405180910390f35b61029d60048036038101906102989190612ba3565b61076a565b6040516102aa9190612bdd565b60405180910390f35b6102bb6107a5565b6040516102c89190612c11565b60405180910390f35b6102d96107ad565b6040516102e69190612b3a565b60405180910390f35b6102f76107b3565b6040516103049190612c42565b60405180910390f35b61032760048036038101906103229190612aba565b6107c1565b6040516103349190612b12565b60405180910390f35b61035760048036038101906103529190612aba565b6107f7565b6040516103649190612b3a565b60405180910390f35b610375610897565b6040516103829190612a09565b60405180910390f35b6103a560048036038101906103a09190612c5b565b6108d4565b6040516103b29190612bdd565b60405180910390f35b6103d560048036038101906103d09190612c5b565b610939565b005b6103f160048036038101906103ec9190612c5b565b61094d565b6040516103fe9190612ca4565b60405180910390f35b610421600480360381019061041c9190612c5b565b61099e565b60405161042e9190612b3a565b60405180910390f35b61043f6109e3565b60405161044c9190612b3a565b60405180910390f35b61045d6109ef565b005b61047960048036038101906104749190612c5b565b610a02565b6040516104869190612b3a565b60405180910390f35b610497610a4f565b6040516104aa9796959493929190612dae565b60405180910390f35b6104bb610b4c565b6040516104c89190612bdd565b60405180910390f35b6104eb60048036038101906104e69190612ba3565b610b74565b6040516104f89190612b3a565b60405180910390f35b610509610bd8565b6040516105169190612e50565b60405180910390f35b610527610be7565b6040516105349190612a09565b60405180910390f35b61055760048036038101906105529190612c5b565b610c77565b6040516105649190612b3a565b60405180910390f35b61058760048036038101906105829190612aba565b610d75565b6040516105949190612b12565b60405180910390f35b6105b760048036038101906105b29190612aba565b610dea565b6040516105c49190612b12565b60405180910390f35b6105e760048036038101906105e29190612ebd565b610e0c565b005b61060360048036038101906105fe9190612f46565b610f0f565b005b61061f600480360381019061061a9190612fe3565b61104e565b60405161062c9190612b3a565b60405180910390f35b61064f600480360381019061064a919061304b565b6110d0565b60405161065c91906130fb565b60405180910390f35b61067f600480360381019061067a9190612c5b565b6111d9565b005b60606003805461069090613141565b80601f01602080910402602001604051908101604052809291908181526020018280546106bc90613141565b80156107075780601f106106de57610100808354040283529160200191610707565b820191905f5260205f20905b8154815290600101906020018083116106ea57829003601f168201915b5050505050905090565b5f5f61071b611285565b905061072881858561128c565b600191505092915050565b5f600254905090565b5f5f610746611285565b905061075385828561144f565b61075e8585856114da565b60019150509392505050565b600e8181548110610779575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b600d5481565b5f6107bc611746565b905090565b5f5f6107cb611285565b90506107ec8185856107dd858961104e565b6107e7919061319e565b61128c565b600191505092915050565b5f610800610bd8565b65ffffffffffff168210610849576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108409061321b565b60405180910390fd5b61088f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20836117fc565b905092915050565b60606040518060400160405280600e81526020017f6d6f64653d74696d657374616d70000000000000000000000000000000000000815250905090565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61094a610944611285565b8261193c565b50565b5f610997600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050611a51565b9050919050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600e80549050905090565b6109f7611aa3565b610a005f611b21565b565b5f610a4860075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611be4565b9050919050565b5f6060805f5f5f6060610a8c60057f4b756c6100000000000000000000000000000000000000000000000000000004611bf090919063ffffffff16565b610ac060067f3100000000000000000000000000000000000000000000000000000000000001611bf090919063ffffffff16565b46305f5f1b5f67ffffffffffffffff811115610adf57610ade613239565b5b604051908082528060200260200182016040528015610b0d5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610b7d610bd8565b65ffffffffffff168210610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd9061321b565b60405180910390fd5b610bd1600b836117fc565b9050919050565b5f610be242611c9d565b905090565b606060048054610bf690613141565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2290613141565b8015610c6d5780601f10610c4457610100808354040283529160200191610c6d565b820191905f5260205f20905b815481529060010190602001808311610c5057829003601f168201915b5050505050905090565b5f5f600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905090505f8114610d4d57600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001820381548110610d1557610d14613266565b5b905f5260205f20015f0160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610d4f565b5f5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915050919050565b5f5f610d7f611285565b90505f610d8c828661104e565b905083811015610dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc890613303565b60405180910390fd5b610dde828686840361128c565b60019250505092915050565b5f5f610df4611285565b9050610e018185856114da565b600191505092915050565b83421115610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e469061336b565b60405180910390fd5b5f610eb0610ea87fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001610e8d9493929190613389565b60405160208183030381529060405280519060200120611cf1565b858585611d0a565b9050610ebb81611d33565b8614610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef390613416565b60405180910390fd5b610f06818861193c565b50505050505050565b83421115610f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f499061347e565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f808c611d33565b89604051602001610f969695949392919061349c565b6040516020818303038152906040528051906020012090505f610fb882611cf1565b90505f610fc782878787611d0a565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90613545565b60405180910390fd5b6110428a8a8a61128c565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110d861295d565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208263ffffffff168154811061112d5761112c613266565b5b905f5260205f20016040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525050905092915050565b6111e1611aa3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906135d3565b60405180910390fd5b61125881611b21565b50565b5f8183611268919061319e565b905092915050565b5f818361127d91906135f1565b905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190613694565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90613722565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114429190612b3a565b60405180910390a3505050565b5f61145a848461104e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146114d457818110156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061378a565b60405180910390fd5b6114d3848484840361128c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613818565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad906138a6565b60405180910390fd5b6115c1838383611d8e565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163b90613934565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161172d9190612b3a565b60405180910390a3611740848484611d93565b50505050565b5f7f00000000000000000000000099f2bdf00acd067c65a79a0b6a3914c555196ea473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156117c157507f000000000000000000000000000000000000000000000000000000000000a86a46145b156117ee577f464537df2bc7ba503f856f0e5ed0aa2b8a17f26362ee4f3b5d8ce967472bcf6d90506117f9565b6117f6611e08565b90505b90565b5f5f838054905090505f5f90505f8290506005831115611870575f61182084611e9d565b8461182b91906135f1565b9050856118388883611f93565b5f015f9054906101000a900463ffffffff1663ffffffff16111561185e5780915061186e565b60018161186b919061319e565b92505b505b5b808210156118cd575f6118848383611fa5565b9050856118918883611f93565b5f015f9054906101000a900463ffffffff1663ffffffff1611156118b7578091506118c7565b6001816118c4919061319e565b92505b50611871565b5f8114611911576118e18660018303611f93565b5f0160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611913565b5f5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935050505092915050565b5f611946836108d4565b90505f6119528461099e565b90508260095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4611a4b828483611fca565b50505050565b5f63ffffffff8016821115611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a92906139c2565b60405180910390fd5b819050919050565b611aab611285565b73ffffffffffffffffffffffffffffffffffffffff16611ac9610b4c565b73ffffffffffffffffffffffffffffffffffffffff1614611b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1690613a2a565b60405180910390fd5b565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f815f01549050919050565b606060ff5f1b8314611c0c57611c05836121ba565b9050611c97565b818054611c1890613141565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4490613141565b8015611c8f5780601f10611c6657610100808354040283529160200191611c8f565b820191905f5260205f20905b815481529060010190602001808311611c7257829003601f168201915b505050505090505b92915050565b5f65ffffffffffff8016821115611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce090613ab8565b60405180910390fd5b819050919050565b5f611d03611cfd611746565b8361222c565b9050919050565b5f5f5f611d198787878761226c565b91509150611d2681612344565b8192505050949350505050565b5f5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050611d7d81611be4565b9150611d88816124a9565b50919050565b505050565b611d9e8383836124bd565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fec61728879a33aa50b55e1f4789dcfc1c680f30a24d7b8694a9f874e242a97b483604051611dfb9190612b3a565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f68d93bc974b06bb1bb36e7316670a26be27f8e9c2eb3a3282a2f12dbc267898a7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611e82959493929190613ad6565b60405160208183030381529060405280519060200120905090565b5f5f8203611ead575f9050611f8e565b5f6001611eb9846124e8565b901c6001901b90506001818481611ed357611ed2613b27565b5b048201901c90506001818481611eec57611eeb613b27565b5b048201901c90506001818481611f0557611f04613b27565b5b048201901c90506001818481611f1e57611f1d613b27565b5b048201901c90506001818481611f3757611f36613b27565b5b048201901c90506001818481611f5057611f4f613b27565b5b048201901c90506001818481611f6957611f68613b27565b5b048201901c9050611f8a81828581611f8457611f83613b27565b5b046125bf565b9150505b919050565b5f825f528160205f2001905092915050565b5f6002828418611fb59190613b54565b828416611fc2919061319e565b905092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561200557505f81115b156121b5575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146120df575f5f612088600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611270856125d7565b915091508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516120d4929190613b84565b60405180910390a250505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121b4575f5f61215d600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061125b856125d7565b915091508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121a9929190613b84565b60405180910390a250505b5b505050565b60605f6121c6836128a0565b90505f602067ffffffffffffffff8111156121e4576121e3613239565b5b6040519080825280601f01601f1916602001820160405280156122165781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0835f1c11156122a4575f60039150915061233b565b5f6001878787876040515f81526020016040526040516122c79493929190613bab565b6020604051602081039080840390855afa1580156122e7573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612333575f6001925092505061233b565b805f92509250505b94509492505050565b5f600481111561235757612356613bee565b5b81600481111561236a57612369613bee565b5b03156124a6576001600481111561238457612383613bee565b5b81600481111561239757612396613bee565b5b036123d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ce90613c65565b60405180910390fd5b600260048111156123eb576123ea613bee565b5b8160048111156123fe576123fd613bee565b5b0361243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590613ccd565b60405180910390fd5b6003600481111561245257612451613bee565b5b81600481111561246557612464613bee565b5b036124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613d5b565b60405180910390fd5b5b50565b6001815f015f828254019250508190555050565b6124c88383836128ee565b6124e36124d4846108d4565b6124dd846108d4565b83611fca565b505050565b5f5f5f90505f608084901c111561250757608083901c92506080810190505b5f604084901c111561252157604083901c92506040810190505b5f602084901c111561253b57602083901c92506020810190505b5f601084901c111561255557601083901c92506010810190505b5f600884901c111561256f57600883901c92506008810190505b5f600484901c111561258957600483901c92506004810190505b5f600284901c11156125a357600283901c92506002810190505b5f600184901c11156125b6576001810190505b80915050919050565b5f8183106125cd57816125cf565b825b905092915050565b5f5f5f858054905090505f5f8214612697576125f68760018403611f93565b6040518060400160405290815f82015f9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250506126d1565b60405180604001604052805f63ffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505b905080602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16935061270684868863ffffffff16565b92505f8211801561272e575061271a610bd8565b65ffffffffffff16815f015163ffffffff16145b1561279e5761273c836128f3565b6127498860018503611f93565b5f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550612896565b8660405180604001604052806127c26127b5610bd8565b65ffffffffffff16611a51565b63ffffffff1681526020016127d6866128f3565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815250908060018154018082558091505060019003905f5260205f20015f909190919091505f820151815f015f6101000a81548163ffffffff021916908363ffffffff1602179055506020820151815f0160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b5050935093915050565b5f5f60ff835f1c169050601f8111156128e5576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b505050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90613de9565b60405180910390fd5b819050919050565b60405180604001604052805f63ffffffff1681526020015f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6129db82612999565b6129e581856129a3565b93506129f58185602086016129b3565b6129fe816129c1565b840191505092915050565b5f6020820190508181035f830152612a2181846129d1565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a5682612a2d565b9050919050565b612a6681612a4c565b8114612a70575f5ffd5b50565b5f81359050612a8181612a5d565b92915050565b5f819050919050565b612a9981612a87565b8114612aa3575f5ffd5b50565b5f81359050612ab481612a90565b92915050565b5f5f60408385031215612ad057612acf612a29565b5b5f612add85828601612a73565b9250506020612aee85828601612aa6565b9150509250929050565b5f8115159050919050565b612b0c81612af8565b82525050565b5f602082019050612b255f830184612b03565b92915050565b612b3481612a87565b82525050565b5f602082019050612b4d5f830184612b2b565b92915050565b5f5f5f60608486031215612b6a57612b69612a29565b5b5f612b7786828701612a73565b9350506020612b8886828701612a73565b9250506040612b9986828701612aa6565b9150509250925092565b5f60208284031215612bb857612bb7612a29565b5b5f612bc584828501612aa6565b91505092915050565b612bd781612a4c565b82525050565b5f602082019050612bf05f830184612bce565b92915050565b5f60ff82169050919050565b612c0b81612bf6565b82525050565b5f602082019050612c245f830184612c02565b92915050565b5f819050919050565b612c3c81612c2a565b82525050565b5f602082019050612c555f830184612c33565b92915050565b5f60208284031215612c7057612c6f612a29565b5b5f612c7d84828501612a73565b91505092915050565b5f63ffffffff82169050919050565b612c9e81612c86565b82525050565b5f602082019050612cb75f830184612c95565b92915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612cf181612cbd565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d2981612a87565b82525050565b5f612d3a8383612d20565b60208301905092915050565b5f602082019050919050565b5f612d5c82612cf7565b612d668185612d01565b9350612d7183612d11565b805f5b83811015612da1578151612d888882612d2f565b9750612d9383612d46565b925050600181019050612d74565b5085935050505092915050565b5f60e082019050612dc15f83018a612ce8565b8181036020830152612dd381896129d1565b90508181036040830152612de781886129d1565b9050612df66060830187612b2b565b612e036080830186612bce565b612e1060a0830185612c33565b81810360c0830152612e228184612d52565b905098975050505050505050565b5f65ffffffffffff82169050919050565b612e4a81612e30565b82525050565b5f602082019050612e635f830184612e41565b92915050565b612e7281612bf6565b8114612e7c575f5ffd5b50565b5f81359050612e8d81612e69565b92915050565b612e9c81612c2a565b8114612ea6575f5ffd5b50565b5f81359050612eb781612e93565b92915050565b5f5f5f5f5f5f60c08789031215612ed757612ed6612a29565b5b5f612ee489828a01612a73565b9650506020612ef589828a01612aa6565b9550506040612f0689828a01612aa6565b9450506060612f1789828a01612e7f565b9350506080612f2889828a01612ea9565b92505060a0612f3989828a01612ea9565b9150509295509295509295565b5f5f5f5f5f5f5f60e0888a031215612f6157612f60612a29565b5b5f612f6e8a828b01612a73565b9750506020612f7f8a828b01612a73565b9650506040612f908a828b01612aa6565b9550506060612fa18a828b01612aa6565b9450506080612fb28a828b01612e7f565b93505060a0612fc38a828b01612ea9565b92505060c0612fd48a828b01612ea9565b91505092959891949750929550565b5f5f60408385031215612ff957612ff8612a29565b5b5f61300685828601612a73565b925050602061301785828601612a73565b9150509250929050565b61302a81612c86565b8114613034575f5ffd5b50565b5f8135905061304581613021565b92915050565b5f5f6040838503121561306157613060612a29565b5b5f61306e85828601612a73565b925050602061307f85828601613037565b9150509250929050565b61309281612c86565b82525050565b5f7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b6130c881613098565b82525050565b604082015f8201516130e25f850182613089565b5060208201516130f560208501826130bf565b50505050565b5f60408201905061310e5f8301846130ce565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061315857607f821691505b60208210810361316b5761316a613114565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131a882612a87565b91506131b383612a87565b92508282019050808211156131cb576131ca613171565b5b92915050565b7f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000005f82015250565b5f6132056019836129a3565b9150613210826131d1565b602082019050919050565b5f6020820190508181035f830152613232816131f9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6132ed6025836129a3565b91506132f882613293565b604082019050919050565b5f6020820190508181035f83015261331a816132e1565b9050919050565b7f4552433230566f7465733a207369676e617475726520657870697265640000005f82015250565b5f613355601d836129a3565b915061336082613321565b602082019050919050565b5f6020820190508181035f83015261338281613349565b9050919050565b5f60808201905061339c5f830187612c33565b6133a96020830186612bce565b6133b66040830185612b2b565b6133c36060830184612b2b565b95945050505050565b7f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000005f82015250565b5f6134006019836129a3565b915061340b826133cc565b602082019050919050565b5f6020820190508181035f83015261342d816133f4565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e650000005f82015250565b5f613468601d836129a3565b915061347382613434565b602082019050919050565b5f6020820190508181035f8301526134958161345c565b9050919050565b5f60c0820190506134af5f830189612c33565b6134bc6020830188612bce565b6134c96040830187612bce565b6134d66060830186612b2b565b6134e36080830185612b2b565b6134f060a0830184612b2b565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e617475726500005f82015250565b5f61352f601e836129a3565b915061353a826134fb565b602082019050919050565b5f6020820190508181035f83015261355c81613523565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135bd6026836129a3565b91506135c882613563565b604082019050919050565b5f6020820190508181035f8301526135ea816135b1565b9050919050565b5f6135fb82612a87565b915061360683612a87565b925082820390508181111561361e5761361d613171565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61367e6024836129a3565b915061368982613624565b604082019050919050565b5f6020820190508181035f8301526136ab81613672565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61370c6022836129a3565b9150613717826136b2565b604082019050919050565b5f6020820190508181035f83015261373981613700565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613774601d836129a3565b915061377f82613740565b602082019050919050565b5f6020820190508181035f8301526137a181613768565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6138026025836129a3565b915061380d826137a8565b604082019050919050565b5f6020820190508181035f83015261382f816137f6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6138906023836129a3565b915061389b82613836565b604082019050919050565b5f6020820190508181035f8301526138bd81613884565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61391e6026836129a3565b9150613929826138c4565b604082019050919050565b5f6020820190508181035f83015261394b81613912565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20335f8201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b5f6139ac6026836129a3565b91506139b782613952565b604082019050919050565b5f6020820190508181035f8301526139d9816139a0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a146020836129a3565b9150613a1f826139e0565b602082019050919050565b5f6020820190508181035f830152613a4181613a08565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20345f8201527f3820626974730000000000000000000000000000000000000000000000000000602082015250565b5f613aa26026836129a3565b9150613aad82613a48565b604082019050919050565b5f6020820190508181035f830152613acf81613a96565b9050919050565b5f60a082019050613ae95f830188612c33565b613af66020830187612c33565b613b036040830186612c33565b613b106060830185612b2b565b613b1d6080830184612bce565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b5e82612a87565b9150613b6983612a87565b925082613b7957613b78613b27565b5b828204905092915050565b5f604082019050613b975f830185612b2b565b613ba46020830184612b2b565b9392505050565b5f608082019050613bbe5f830187612c33565b613bcb6020830186612c02565b613bd86040830185612c33565b613be56060830184612c33565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f45434453413a20696e76616c6964207369676e617475726500000000000000005f82015250565b5f613c4f6018836129a3565b9150613c5a82613c1b565b602082019050919050565b5f6020820190508181035f830152613c7c81613c43565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e677468005f82015250565b5f613cb7601f836129a3565b9150613cc282613c83565b602082019050919050565b5f6020820190508181035f830152613ce481613cab565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c5f8201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d456022836129a3565b9150613d5082613ceb565b604082019050919050565b5f6020820190508181035f830152613d7281613d39565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e20325f8201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b5f613dd36027836129a3565b9150613dde82613d79565b604082019050919050565b5f6020820190508181035f830152613e0081613dc7565b905091905056fea2646970667358221220d8a0377c3a31cca4d47ca044832f18e35c43abd53367766c4b1e1cd0c5342dee64736f6c634300081c0033
0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044b756c610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b554c4100000000000000000000000000000000000000000000000000000000
----Decoded View------------Arg [0] : _name (string): KulaArg [1] : _symbol (string): KULA
----Encoded View------------Arg [0] : 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000044b756c6100000000000000000000000000000000000000000000000000000000Arg [1] : 0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000044b554c4100000000000000000000000000000000000000000000000000000000