From 40c1fd43d762a8ebc80518ee64ef610975235ca6 Mon Sep 17 00:00:00 2001 From: Ladd Hoffman Date: Tue, 30 Apr 2024 15:56:43 -0500 Subject: [PATCH] deploy core contracts separately due to size limit --- backend/contract-addresses.json | 15 +- backend/contractArtifacts/Bench.json | 251 +++++++++ backend/contractArtifacts/DAO.json | 490 ++++++++---------- backend/contractArtifacts/Forum.json | 215 ++++++++ backend/contractArtifacts/Onboarding.json | 12 +- backend/contractArtifacts/Proposals.json | 12 +- backend/contractArtifacts/Reputation.json | 460 ++++++++++++++++ backend/contractArtifacts/Rollup.json | 4 +- backend/contractArtifacts/Work1.json | 4 +- backend/contractArtifacts/Work2.json | 4 +- backend/src/api/import-from-ss.js | 8 +- backend/src/contract-listeners/rollup.js | 3 - .../contract-listeners/validation-pools.js | 99 ---- backend/src/index.js | 4 +- .../{contract-listeners => topics}/index.js | 8 +- .../proposals-notifier.js} | 0 backend/src/topics/rollup.js | 24 + backend/src/topics/validation-pools.js | 60 +++ backend/src/topics/work1.js | 26 + backend/src/util/gate-by-proposal.js | 61 +++ ethereum/contract-addresses.json | 15 +- ethereum/contracts/Onboarding.sol | 5 +- ethereum/contracts/Proposals.sol | 6 +- .../core/{ValidationPools.sol => Bench.sol} | 171 +++--- ethereum/contracts/core/DAO.sol | 270 +++++++++- ethereum/contracts/core/Forum.sol | 65 ++- ethereum/contracts/core/Reputation.sol | 55 +- ethereum/contracts/interfaces/IOnValidate.sol | 2 +- ethereum/scripts/automatic-staking.js | 43 +- ethereum/scripts/deploy-dao.js | 4 +- ethereum/scripts/deploy.js | 4 +- .../scripts/util/deploy-core-contracts.js | 18 + ethereum/test/Forum.js | 14 +- ethereum/test/Onboarding.js | 14 +- ethereum/test/Proposals.js | 8 +- ethereum/test/ValidationPools.js | 32 +- ethereum/test/Work1.js | 8 +- ethereum/test/util/deploy-dao.js | 24 + frontend/contract-addresses.json | 15 +- frontend/contractArtifacts/Bench.json | 251 +++++++++ frontend/contractArtifacts/DAO.json | 490 ++++++++---------- frontend/contractArtifacts/Forum.json | 215 ++++++++ frontend/contractArtifacts/Onboarding.json | 12 +- frontend/contractArtifacts/Proposals.json | 12 +- frontend/contractArtifacts/Reputation.json | 460 ++++++++++++++++ frontend/contractArtifacts/Rollup.json | 4 +- frontend/contractArtifacts/Work1.json | 4 +- frontend/contractArtifacts/Work2.json | 4 +- frontend/src/components/tabs/index.jsx | 10 +- frontend/src/contexts/MainContextProvider.jsx | 6 +- 50 files changed, 3072 insertions(+), 929 deletions(-) create mode 100644 backend/contractArtifacts/Bench.json create mode 100644 backend/contractArtifacts/Forum.json create mode 100644 backend/contractArtifacts/Reputation.json delete mode 100644 backend/src/contract-listeners/rollup.js delete mode 100644 backend/src/contract-listeners/validation-pools.js rename backend/src/{contract-listeners => topics}/index.js (58%) rename backend/src/{contract-listeners/proposals.js => topics/proposals-notifier.js} (100%) create mode 100644 backend/src/topics/rollup.js create mode 100644 backend/src/topics/validation-pools.js create mode 100644 backend/src/topics/work1.js create mode 100644 backend/src/util/gate-by-proposal.js rename ethereum/contracts/core/{ValidationPools.sol => Bench.sol} (70%) create mode 100644 ethereum/scripts/util/deploy-core-contracts.js create mode 100644 ethereum/test/util/deploy-dao.js create mode 100644 frontend/contractArtifacts/Bench.json create mode 100644 frontend/contractArtifacts/Forum.json create mode 100644 frontend/contractArtifacts/Reputation.json diff --git a/backend/contract-addresses.json b/backend/contract-addresses.json index fd597d1..1e1e569 100644 --- a/backend/contract-addresses.json +++ b/backend/contract-addresses.json @@ -1,11 +1,14 @@ { "localhost": { - "DAO": "0x87933c1e51FdF52C58ee54348a9372bbDeE9A8Dc", - "Work1": "0x215078c5cf21ffB79Ee14Cf09156B94a11b7340f", - "Onboarding": "0x3c2820D27e7470075d16856D7D555FD5011451Ec", - "Proposals": "0xCd5881DB1aa6b86283a9c5660FaB65C989cf2721", - "Rollup": "0x8611676563EBcd69dC52E5829bF2914A957398C3", - "Work2": "0xC6BF1b68311e891D2BF41E4A3CB350a403831Ccd" + "DAO": "0x3287061aDCeE36C1aae420a06E4a5EaE865Fe3ce", + "Work1": "0x76Dfe9F47f06112a1b78960bf37d87CfbB6D6133", + "Onboarding": "0xd2845aE812Ee42cF024fB4C55c052365792aBd78", + "Proposals": "0x8688E736D0D72161db4D25f68EF7d0EE4856ba19", + "Rollup": "0x8BDA04936887cF11263B87185E4D19e8158c6296", + "Work2": "0xf15aCe29E5e3e4bb31FCddF2C65DF7C440449a57", + "Reputation": "0xC0f00E5915F9abE6476858fD1961EAf79395ea64", + "Forum": "0x3734B0944ea37694E85AEF60D5b256d19EDA04be", + "Bench": "0x71cb20D63576a0Fa4F620a2E96C73F82848B09e1" }, "sepolia": { "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", diff --git a/backend/contractArtifacts/Bench.json b/backend/contractArtifacts/Bench.json new file mode 100644 index 0000000..639a786 --- /dev/null +++ b/backend/contractArtifacts/Bench.json @@ -0,0 +1,251 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Bench", + "sourceName": "contracts/core/Bench.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "evaluateOutcome", + "outputs": [ + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "uint256[2]", + "name": "quorum", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2]", + "name": "winRatio", + "type": "uint256[2]" + }, + { + "internalType": "uint256", + "name": "bindingPercent", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "redistributeLosingStakes", + "type": "bool" + }, + { + "internalType": "bool", + "name": "callbackOnValidate", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "initiateValidationPool", + "outputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "inFavor", + "type": "bool" + } + ], + "name": "stakeOnValidationPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "validationPoolCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "validationPools", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeCount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "uint256[2]", + "name": "quorum", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2]", + "name": "winRatio", + "type": "uint256[2]" + }, + { + "internalType": "uint256", + "name": "bindingPercent", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "redistributeLosingStakes", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolParams", + "name": "params", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "resolved", + "type": "bool" + }, + { + "internalType": "bool", + "name": "outcome", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolProps", + "name": "props", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "callbackOnValidate", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040526040518060400160405280600160ff168152602001600a60ff1681525060039060026200003392919062000048565b503480156200004157600080fd5b50620000b1565b82600281019282156200007f579160200282015b828111156200007e578251829060ff169055916020019190600101906200005c565b5b5090506200008e919062000092565b5090565b5b80821115620000ad57600081600090555060010162000093565b5090565b61333480620000c16000396000f3fe6080604052600436106100555760003560e01c806317c182171461005a578063217c196114610097578063642b5bfb146100c0578063a1a38bf9146100eb578063a23362791461011b578063fe0d695a1461015e575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190611ce5565b610187565b60405161008e9190611d2d565b60405180910390f35b3480156100a357600080fd5b506100be60048036038101906100b99190611dd2565b6111ce565b005b3480156100cc57600080fd5b506100d56112de565b6040516100e29190611e48565b60405180910390f35b61010560048036038101906101009190611f40565b6112e4565b6040516101129190611e48565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190611ce5565b6118c9565b60405161015597969594939291906122ed565b60405180910390f35b34801561016a57600080fd5b50610185600480360381019061018091906123ac565b611b73565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061245c565b60405180910390fd5b600080600084815260200190815260200160002090506000151581600b0160040160009054906101000a900460ff1615151461028a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610281906124c8565b60405180910390fd5b600080600080600090505b846003015481101561049a5784600201600082815260200190815260200160002091508160020154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161033c91906124e8565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d9190612518565b101561044c57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161040291906124e8565b602060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612518565b82600201819055505b8160010160009054906101000a900460ff161561047a578160020154846104739190612574565b935061048d565b81600201548361048a9190612574565b92505b8080600101915050610295565b50600284600b01600201546104af91906125d7565b836104ba9190612574565b9250600284600b01600201546104d091906125d7565b826104db9190612574565b91506000600285600b01600201546104f39190612608565b14610508576001836105059190612574565b92505b83600b01600301544211806105b75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612518565b82846105b59190612574565b145b6105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906126ab565b60405180910390fd5b836004016001016000600281106106105761060f6126cb565b5b0154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190612518565b6106ad91906126fa565b82846106b99190612574565b856004016001016001600281106106d3576106d26126cb565b5b01546106df91906126fa565b1161087a57600184600b0160040160006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e876000806040518463ffffffff1660e01b81526004016107649392919061273c565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050508360100160009054906101000a900460ff161561086d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600087878a6011016040518763ffffffff1660e01b815260040161083a9695949392919061286c565b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505b60009450505050506111c9565b83600401600301600060028110610894576108936126cb565b5b015482846108a29190612574565b6108ac91906126fa565b846004016003016001600281106108c6576108c56126cb565b5b0154846108d391906126fa565b10159450600184600b0160040160006101000a81548160ff0219169083151502179055508484600b0160040160016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e878760016040518463ffffffff1660e01b81526004016109769392919061273c565b600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050506000856109b557826109b7565b835b905060008060005b8760030154811015610bec5787600201600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610bdf576000606489600401600501548760020154610a1991906126fa565b610a2391906125d7565b90508860040160060160009054906101000a900460ff1615610b2957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae4939291906128d4565b600060405180830381600087803b158015610afe57600080fd5b505af1158015610b12573d6000803e3d6000fd5b505050508084610b229190612574565b9350610bdd565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610baa92919061290b565b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505b505b80806001019150506109bf565b508715610e9a57600287600b0160020154610c0791906125d7565b82610c129190612574565b915060005b8760030154811015610da55787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610c6f57508460010160009054906101000a900460ff161515891515145b15610d985760006064896004016005015486886002015487610c9191906126fa565b610c9b91906125d7565b610ca591906126fa565b610caf91906125d7565b90508083610cbd9190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610d64939291906128d4565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505b8080600101915050610c17565b5060008183610db49190612934565b90506000600289600b0160020154610dcc9190612608565b14610de157600181610dde9190612574565b90505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd0987289600b016000018360028c600b0160020154610e3b91906125d7565b610e459190612574565b6040518363ffffffff1660e01b8152600401610e62929190612a1a565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505050611060565b86600b016002015482610ead9190612574565b915060005b876003015481101561105e5787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610f0a57508460010160009054906101000a900460ff161515891515145b156110515760006064896004016005015460028b600b0160020154610f2f91906125d7565b87610f3a9190612934565b886002015487610f4a91906126fa565b610f5491906125d7565b610f5e91906126fa565b610f6891906125d7565b90508083610f769190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161101d939291906128d4565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50505050505b8080600101915050610eb2565b505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631e57e07888600b01600101546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050508660100160009054906101000a900460ff16156111c157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60018a8a8d6011016040518763ffffffff1660e01b815260040161118e9695949392919061286c565b600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050505b505050505050505b919050565b6000806000868152602001908152602001600020905080600b016003015442111561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612a96565b60405180910390fd5b600081600301600081548092919061124590612ab6565b91905055905060008260020160008381526020019081526020016000209050858160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010160006101000a81548160ff02191690831515021790555084816002018190555081816000018190555050505050505050565b60015481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612b70565b60405180910390fd5b600034116113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612c02565b60405180910390fd5b60018910156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612c6e565b60405180910390fd5b651cae8c13e000891115611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612cda565b60405180910390fd5b8760016002811061145a576114596126cb565b5b60200201356003600060028110611474576114736126cb565b5b015461148091906126fa565b88600060028110611494576114936126cb565b5b602002013560036001600281106114ae576114ad6126cb565b5b01546114ba91906126fa565b10156114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f290612d46565b60405180910390fd5b8760016002811061150f5761150e6126cb565b5b602002013588600060028110611528576115276126cb565b5b6020020135111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612db2565b60405180910390fd5b86600160028110611582576115816126cb565b5b60200201358760006002811061159b5761159a6126cb565b5b602002013511156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612e1e565b60405180910390fd5b6064861115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612e8a565b60405180910390fd5b6001600081548092919061163890612ab6565b919050559050600080600083815260200190815260200160002090508181600001819055508c8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b8b82600b0160000191826116b692919061307b565b503481600b016001018190555089426116cf9190612574565b81600b016003018190555088816004016001019060026116f0929190611c48565b508781600401600301906002611707929190611c48565b50868160040160050181905550858160040160060160006101000a81548160ff021916908315150217905550898160040160000181905550848160100160006101000a81548160ff021916908315150217905550838382601101918261176e92919061319c565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346040518363ffffffff1660e01b81526004016117ee92919061290b565b600060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050503481600b0160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc00bbfe836040518263ffffffff1660e01b81526004016118879190611e48565b600060405180830381600087803b1580156118a157600080fd5b505af11580156118b5573d6000803e3d6000fd5b50505050509b9a5050505050505050505050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611964576020028201915b815481526020019060010190808311611950575b50505050508152602001600382016002806020026040519081016040528092919082600280156119a9576020028201915b815481526020019060010190808311611995575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600b016040518060c00160405290816000820180546119f7906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611a23906127a2565b8015611a705780601f10611a4557610100808354040283529160200191611a70565b820191906000526020600020905b815481529060010190602001808311611a5357829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff161515151581525050908060100160009054906101000a900460ff1690806011018054611af0906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1c906127a2565b8015611b695780601f10611b3e57610100808354040283529160200191611b69565b820191906000526020600020905b815481529060010190602001808311611b4c57829003601f168201915b5050505050905087565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb906132de565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8260028101928215611c77579160200282015b82811115611c76578235825591602001919060010190611c5b565b5b509050611c849190611c88565b5090565b5b80821115611ca1576000816000905550600101611c89565b5090565b600080fd5b600080fd5b6000819050919050565b611cc281611caf565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611ca5565b5b6000611d0984828501611cd0565b91505092915050565b60008115159050919050565b611d2781611d12565b82525050565b6000602082019050611d426000830184611d1e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7382611d48565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b611daf81611d12565b8114611dba57600080fd5b50565b600081359050611dcc81611da6565b92915050565b60008060008060808587031215611dec57611deb611ca5565b5b6000611dfa87828801611cd0565b9450506020611e0b87828801611d91565b9350506040611e1c87828801611cd0565b9250506060611e2d87828801611dbd565b91505092959194509250565b611e4281611caf565b82525050565b6000602082019050611e5d6000830184611e39565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e8857611e87611e63565b5b8235905067ffffffffffffffff811115611ea557611ea4611e68565b5b602083019150836001820283011115611ec157611ec0611e6d565b5b9250929050565b600081905082602060020282011115611ee457611ee3611e6d565b5b92915050565b60008083601f840112611f0057611eff611e63565b5b8235905067ffffffffffffffff811115611f1d57611f1c611e68565b5b602083019150836001820283011115611f3957611f38611e6d565b5b9250929050565b60008060008060008060008060008060006101608c8e031215611f6657611f65611ca5565b5b6000611f748e828f01611d91565b9b505060208c013567ffffffffffffffff811115611f9557611f94611caa565b5b611fa18e828f01611e72565b9a509a50506040611fb48e828f01611cd0565b9850506060611fc58e828f01611ec8565b97505060a0611fd68e828f01611ec8565b96505060e0611fe78e828f01611cd0565b955050610100611ff98e828f01611dbd565b94505061012061200b8e828f01611dbd565b9350506101408c013567ffffffffffffffff81111561202d5761202c611caa565b5b6120398e828f01611eea565b92509250509295989b509295989b9093969950565b61205781611d68565b82525050565b61206681611caf565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612098838361205d565b60208301905092915050565b6000602082019050919050565b6120ba8161206c565b6120c48184612077565b92506120cf82612082565b8060005b838110156121005781516120e7878261208c565b96506120f2836120a4565b9250506001810190506120d3565b505050505050565b61211181611d12565b82525050565b60e08201600082015161212d600085018261205d565b50602082015161214060208501826120b1565b50604082015161215360608501826120b1565b50606082015161216660a085018261205d565b50608082015161217960c0850182612108565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b957808201518184015260208101905061219e565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e18261217f565b6121eb818561218a565b93506121fb81856020860161219b565b612204816121c5565b840191505092915050565b600060c083016000830151848203600086015261222c82826121d6565b9150506020830151612241602086018261205d565b506040830151612254604086018261205d565b506060830151612267606086018261205d565b50608083015161227a6080860182612108565b5060a083015161228d60a0860182612108565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b60006122bf82612298565b6122c981856122a3565b93506122d981856020860161219b565b6122e2816121c5565b840191505092915050565b60006101a082019050612303600083018a611e39565b612310602083018961204e565b61231d6040830188611e39565b61232a6060830187612117565b81810361014083015261233d818661220f565b905061234d610160830185611d1e565b81810361018083015261236081846122b4565b905098975050505050505050565b600061237982611d68565b9050919050565b6123898161236e565b811461239457600080fd5b50565b6000813590506123a681612380565b92915050565b6000602082840312156123c2576123c1611ca5565b5b60006123d084828501612397565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206576616c7560008201527f6174654f7574636f6d6500000000000000000000000000000000000000000000602082015250565b6000612446602a836123d9565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b60006124b26018836123d9565b91506124bd8261247c565b602082019050919050565b600060208201905081810360008301526124e1816124a5565b9050919050565b60006020820190506124fd600083018461204e565b92915050565b60008151905061251281611cb9565b92915050565b60006020828403121561252e5761252d611ca5565b5b600061253c84828501612503565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061257f82611caf565b915061258a83611caf565b92508282019050808211156125a2576125a1612545565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125e282611caf565b91506125ed83611caf565b9250826125fd576125fc6125a8565b5b828204905092915050565b600061261382611caf565b915061261e83611caf565b92508261262e5761262d6125a8565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006126956021836123d9565b91506126a082612639565b604082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270582611caf565b915061271083611caf565b925082820261271e81611caf565b9150828204841483151761273557612734612545565b5b5092915050565b60006060820190506127516000830186611e39565b61275e6020830185611d1e565b61276b6040830184611d1e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ba57607f821691505b6020821081036127cd576127cc612773565b5b50919050565b60008190508160005260206000209050919050565b600081546127f5816127a2565b6127ff81866122a3565b9450600182166000811461281a576001811461283057612863565b60ff198316865281151560200286019350612863565b612839856127d3565b60005b8381101561285b5781548189015260018201915060208101905061283c565b808801955050505b50505092915050565b600060c082019050612881600083018961204e565b61288e6020830188611d1e565b61289b6040830187611d1e565b6128a86060830186611e39565b6128b56080830185611e39565b81810360a08301526128c781846127e8565b9050979650505050505050565b60006060820190506128e9600083018661204e565b6128f6602083018561204e565b6129036040830184611e39565b949350505050565b6000604082019050612920600083018561204e565b61292d6020830184611e39565b9392505050565b600061293f82611caf565b915061294a83611caf565b925082820390508181111561296257612961612545565b5b92915050565b60008190508160005260206000209050919050565b6000815461298a816127a2565b61299481866123d9565b945060018216600081146129af57600181146129c5576129f8565b60ff1983168652811515602002860193506129f8565b6129ce85612968565b60005b838110156129f0578154818901526001820191506020810190506129d1565b808801955050505b50505092915050565b6000819050919050565b612a1481612a01565b82525050565b60006040820190508181036000830152612a34818561297d565b9050612a436020830184612a0b565b9392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000612a806018836123d9565b9150612a8b82612a4a565b602082019050919050565b60006020820190508181036000830152612aaf81612a73565b9050919050565b6000612ac182611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af357612af2612545565b5b600182019050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20696e69746960008201527f61746556616c69646174696f6e506f6f6c000000000000000000000000000000602082015250565b6000612b5a6031836123d9565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612bec602b836123d9565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612c586015836123d9565b9150612c6382612c22565b602082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000612cc46014836123d9565b9150612ccf82612c8e565b602082019050919050565b60006020820190508181036000830152612cf381612cb7565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000612d306017836123d9565b9150612d3b82612cfa565b602082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000612d9c601a836123d9565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000612e08601d836123d9565b9150612e1382612dd2565b602082019050919050565b60006020820190508181036000830152612e3781612dfb565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000612e74601e836123d9565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b600060088302612f317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ef4565b612f3b8683612ef4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612f78612f73612f6e84611caf565b612f53565b611caf565b9050919050565b6000819050919050565b612f9283612f5d565b612fa6612f9e82612f7f565b848454612f01565b825550505050565b600090565b612fbb612fae565b612fc6818484612f89565b505050565b5b81811015612fea57612fdf600082612fb3565b600181019050612fcc565b5050565b601f82111561302f5761300081612968565b61300984612ee4565b81016020851015613018578190505b61302c61302485612ee4565b830182612fcb565b50505b505050565b600082821c905092915050565b600061305260001984600802613034565b1980831691505092915050565b600061306b8383613041565b9150826002028217905092915050565b6130858383612eaa565b67ffffffffffffffff81111561309e5761309d612eb5565b5b6130a882546127a2565b6130b3828285612fee565b6000601f8311600181146130e257600084156130d0578287013590505b6130da858261305f565b865550613142565b601f1984166130f086612968565b60005b82811015613118578489013582556001820191506020850194506020810190506130f3565b868310156131355784890135613131601f891682613041565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561319757613168816127d3565b61317184612ee4565b81016020851015613180578190505b61319461318c85612ee4565b830182612fcb565b50505b505050565b6131a6838361314b565b67ffffffffffffffff8111156131bf576131be612eb5565b5b6131c982546127a2565b6131d4828285613156565b6000601f83116001811461320357600084156131f1578287013590505b6131fb858261305f565b865550613263565b601f198416613211866127d3565b60005b8281101561323957848901358255600182019150602085019450602081019050613214565b868310156132565784890135613252601f891682613041565b8355505b6001600288020188555050505b50505050505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c86021836123d9565b91506132d38261326c565b604082019050919050565b600060208201905081810360008301526132f7816132bb565b905091905056fea2646970667358221220dd9849e061c699c77e059ea430acf000005922570552a522f8543df7b854489d64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c806317c182171461005a578063217c196114610097578063642b5bfb146100c0578063a1a38bf9146100eb578063a23362791461011b578063fe0d695a1461015e575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190611ce5565b610187565b60405161008e9190611d2d565b60405180910390f35b3480156100a357600080fd5b506100be60048036038101906100b99190611dd2565b6111ce565b005b3480156100cc57600080fd5b506100d56112de565b6040516100e29190611e48565b60405180910390f35b61010560048036038101906101009190611f40565b6112e4565b6040516101129190611e48565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190611ce5565b6118c9565b60405161015597969594939291906122ed565b60405180910390f35b34801561016a57600080fd5b50610185600480360381019061018091906123ac565b611b73565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061245c565b60405180910390fd5b600080600084815260200190815260200160002090506000151581600b0160040160009054906101000a900460ff1615151461028a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610281906124c8565b60405180910390fd5b600080600080600090505b846003015481101561049a5784600201600082815260200190815260200160002091508160020154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161033c91906124e8565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d9190612518565b101561044c57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161040291906124e8565b602060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612518565b82600201819055505b8160010160009054906101000a900460ff161561047a578160020154846104739190612574565b935061048d565b81600201548361048a9190612574565b92505b8080600101915050610295565b50600284600b01600201546104af91906125d7565b836104ba9190612574565b9250600284600b01600201546104d091906125d7565b826104db9190612574565b91506000600285600b01600201546104f39190612608565b14610508576001836105059190612574565b92505b83600b01600301544211806105b75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612518565b82846105b59190612574565b145b6105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906126ab565b60405180910390fd5b836004016001016000600281106106105761060f6126cb565b5b0154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190612518565b6106ad91906126fa565b82846106b99190612574565b856004016001016001600281106106d3576106d26126cb565b5b01546106df91906126fa565b1161087a57600184600b0160040160006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e876000806040518463ffffffff1660e01b81526004016107649392919061273c565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050508360100160009054906101000a900460ff161561086d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600087878a6011016040518763ffffffff1660e01b815260040161083a9695949392919061286c565b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505b60009450505050506111c9565b83600401600301600060028110610894576108936126cb565b5b015482846108a29190612574565b6108ac91906126fa565b846004016003016001600281106108c6576108c56126cb565b5b0154846108d391906126fa565b10159450600184600b0160040160006101000a81548160ff0219169083151502179055508484600b0160040160016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e878760016040518463ffffffff1660e01b81526004016109769392919061273c565b600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050506000856109b557826109b7565b835b905060008060005b8760030154811015610bec5787600201600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610bdf576000606489600401600501548760020154610a1991906126fa565b610a2391906125d7565b90508860040160060160009054906101000a900460ff1615610b2957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae4939291906128d4565b600060405180830381600087803b158015610afe57600080fd5b505af1158015610b12573d6000803e3d6000fd5b505050508084610b229190612574565b9350610bdd565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610baa92919061290b565b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505b505b80806001019150506109bf565b508715610e9a57600287600b0160020154610c0791906125d7565b82610c129190612574565b915060005b8760030154811015610da55787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610c6f57508460010160009054906101000a900460ff161515891515145b15610d985760006064896004016005015486886002015487610c9191906126fa565b610c9b91906125d7565b610ca591906126fa565b610caf91906125d7565b90508083610cbd9190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610d64939291906128d4565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505b8080600101915050610c17565b5060008183610db49190612934565b90506000600289600b0160020154610dcc9190612608565b14610de157600181610dde9190612574565b90505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd0987289600b016000018360028c600b0160020154610e3b91906125d7565b610e459190612574565b6040518363ffffffff1660e01b8152600401610e62929190612a1a565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505050611060565b86600b016002015482610ead9190612574565b915060005b876003015481101561105e5787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610f0a57508460010160009054906101000a900460ff161515891515145b156110515760006064896004016005015460028b600b0160020154610f2f91906125d7565b87610f3a9190612934565b886002015487610f4a91906126fa565b610f5491906125d7565b610f5e91906126fa565b610f6891906125d7565b90508083610f769190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161101d939291906128d4565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50505050505b8080600101915050610eb2565b505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631e57e07888600b01600101546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050508660100160009054906101000a900460ff16156111c157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60018a8a8d6011016040518763ffffffff1660e01b815260040161118e9695949392919061286c565b600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050505b505050505050505b919050565b6000806000868152602001908152602001600020905080600b016003015442111561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612a96565b60405180910390fd5b600081600301600081548092919061124590612ab6565b91905055905060008260020160008381526020019081526020016000209050858160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010160006101000a81548160ff02191690831515021790555084816002018190555081816000018190555050505050505050565b60015481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612b70565b60405180910390fd5b600034116113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612c02565b60405180910390fd5b60018910156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612c6e565b60405180910390fd5b651cae8c13e000891115611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612cda565b60405180910390fd5b8760016002811061145a576114596126cb565b5b60200201356003600060028110611474576114736126cb565b5b015461148091906126fa565b88600060028110611494576114936126cb565b5b602002013560036001600281106114ae576114ad6126cb565b5b01546114ba91906126fa565b10156114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f290612d46565b60405180910390fd5b8760016002811061150f5761150e6126cb565b5b602002013588600060028110611528576115276126cb565b5b6020020135111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612db2565b60405180910390fd5b86600160028110611582576115816126cb565b5b60200201358760006002811061159b5761159a6126cb565b5b602002013511156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612e1e565b60405180910390fd5b6064861115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612e8a565b60405180910390fd5b6001600081548092919061163890612ab6565b919050559050600080600083815260200190815260200160002090508181600001819055508c8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b8b82600b0160000191826116b692919061307b565b503481600b016001018190555089426116cf9190612574565b81600b016003018190555088816004016001019060026116f0929190611c48565b508781600401600301906002611707929190611c48565b50868160040160050181905550858160040160060160006101000a81548160ff021916908315150217905550898160040160000181905550848160100160006101000a81548160ff021916908315150217905550838382601101918261176e92919061319c565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346040518363ffffffff1660e01b81526004016117ee92919061290b565b600060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050503481600b0160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc00bbfe836040518263ffffffff1660e01b81526004016118879190611e48565b600060405180830381600087803b1580156118a157600080fd5b505af11580156118b5573d6000803e3d6000fd5b50505050509b9a5050505050505050505050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611964576020028201915b815481526020019060010190808311611950575b50505050508152602001600382016002806020026040519081016040528092919082600280156119a9576020028201915b815481526020019060010190808311611995575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600b016040518060c00160405290816000820180546119f7906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611a23906127a2565b8015611a705780601f10611a4557610100808354040283529160200191611a70565b820191906000526020600020905b815481529060010190602001808311611a5357829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff161515151581525050908060100160009054906101000a900460ff1690806011018054611af0906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1c906127a2565b8015611b695780601f10611b3e57610100808354040283529160200191611b69565b820191906000526020600020905b815481529060010190602001808311611b4c57829003601f168201915b5050505050905087565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb906132de565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8260028101928215611c77579160200282015b82811115611c76578235825591602001919060010190611c5b565b5b509050611c849190611c88565b5090565b5b80821115611ca1576000816000905550600101611c89565b5090565b600080fd5b600080fd5b6000819050919050565b611cc281611caf565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611ca5565b5b6000611d0984828501611cd0565b91505092915050565b60008115159050919050565b611d2781611d12565b82525050565b6000602082019050611d426000830184611d1e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7382611d48565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b611daf81611d12565b8114611dba57600080fd5b50565b600081359050611dcc81611da6565b92915050565b60008060008060808587031215611dec57611deb611ca5565b5b6000611dfa87828801611cd0565b9450506020611e0b87828801611d91565b9350506040611e1c87828801611cd0565b9250506060611e2d87828801611dbd565b91505092959194509250565b611e4281611caf565b82525050565b6000602082019050611e5d6000830184611e39565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e8857611e87611e63565b5b8235905067ffffffffffffffff811115611ea557611ea4611e68565b5b602083019150836001820283011115611ec157611ec0611e6d565b5b9250929050565b600081905082602060020282011115611ee457611ee3611e6d565b5b92915050565b60008083601f840112611f0057611eff611e63565b5b8235905067ffffffffffffffff811115611f1d57611f1c611e68565b5b602083019150836001820283011115611f3957611f38611e6d565b5b9250929050565b60008060008060008060008060008060006101608c8e031215611f6657611f65611ca5565b5b6000611f748e828f01611d91565b9b505060208c013567ffffffffffffffff811115611f9557611f94611caa565b5b611fa18e828f01611e72565b9a509a50506040611fb48e828f01611cd0565b9850506060611fc58e828f01611ec8565b97505060a0611fd68e828f01611ec8565b96505060e0611fe78e828f01611cd0565b955050610100611ff98e828f01611dbd565b94505061012061200b8e828f01611dbd565b9350506101408c013567ffffffffffffffff81111561202d5761202c611caa565b5b6120398e828f01611eea565b92509250509295989b509295989b9093969950565b61205781611d68565b82525050565b61206681611caf565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612098838361205d565b60208301905092915050565b6000602082019050919050565b6120ba8161206c565b6120c48184612077565b92506120cf82612082565b8060005b838110156121005781516120e7878261208c565b96506120f2836120a4565b9250506001810190506120d3565b505050505050565b61211181611d12565b82525050565b60e08201600082015161212d600085018261205d565b50602082015161214060208501826120b1565b50604082015161215360608501826120b1565b50606082015161216660a085018261205d565b50608082015161217960c0850182612108565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b957808201518184015260208101905061219e565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e18261217f565b6121eb818561218a565b93506121fb81856020860161219b565b612204816121c5565b840191505092915050565b600060c083016000830151848203600086015261222c82826121d6565b9150506020830151612241602086018261205d565b506040830151612254604086018261205d565b506060830151612267606086018261205d565b50608083015161227a6080860182612108565b5060a083015161228d60a0860182612108565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b60006122bf82612298565b6122c981856122a3565b93506122d981856020860161219b565b6122e2816121c5565b840191505092915050565b60006101a082019050612303600083018a611e39565b612310602083018961204e565b61231d6040830188611e39565b61232a6060830187612117565b81810361014083015261233d818661220f565b905061234d610160830185611d1e565b81810361018083015261236081846122b4565b905098975050505050505050565b600061237982611d68565b9050919050565b6123898161236e565b811461239457600080fd5b50565b6000813590506123a681612380565b92915050565b6000602082840312156123c2576123c1611ca5565b5b60006123d084828501612397565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206576616c7560008201527f6174654f7574636f6d6500000000000000000000000000000000000000000000602082015250565b6000612446602a836123d9565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b60006124b26018836123d9565b91506124bd8261247c565b602082019050919050565b600060208201905081810360008301526124e1816124a5565b9050919050565b60006020820190506124fd600083018461204e565b92915050565b60008151905061251281611cb9565b92915050565b60006020828403121561252e5761252d611ca5565b5b600061253c84828501612503565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061257f82611caf565b915061258a83611caf565b92508282019050808211156125a2576125a1612545565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125e282611caf565b91506125ed83611caf565b9250826125fd576125fc6125a8565b5b828204905092915050565b600061261382611caf565b915061261e83611caf565b92508261262e5761262d6125a8565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006126956021836123d9565b91506126a082612639565b604082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270582611caf565b915061271083611caf565b925082820261271e81611caf565b9150828204841483151761273557612734612545565b5b5092915050565b60006060820190506127516000830186611e39565b61275e6020830185611d1e565b61276b6040830184611d1e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ba57607f821691505b6020821081036127cd576127cc612773565b5b50919050565b60008190508160005260206000209050919050565b600081546127f5816127a2565b6127ff81866122a3565b9450600182166000811461281a576001811461283057612863565b60ff198316865281151560200286019350612863565b612839856127d3565b60005b8381101561285b5781548189015260018201915060208101905061283c565b808801955050505b50505092915050565b600060c082019050612881600083018961204e565b61288e6020830188611d1e565b61289b6040830187611d1e565b6128a86060830186611e39565b6128b56080830185611e39565b81810360a08301526128c781846127e8565b9050979650505050505050565b60006060820190506128e9600083018661204e565b6128f6602083018561204e565b6129036040830184611e39565b949350505050565b6000604082019050612920600083018561204e565b61292d6020830184611e39565b9392505050565b600061293f82611caf565b915061294a83611caf565b925082820390508181111561296257612961612545565b5b92915050565b60008190508160005260206000209050919050565b6000815461298a816127a2565b61299481866123d9565b945060018216600081146129af57600181146129c5576129f8565b60ff1983168652811515602002860193506129f8565b6129ce85612968565b60005b838110156129f0578154818901526001820191506020810190506129d1565b808801955050505b50505092915050565b6000819050919050565b612a1481612a01565b82525050565b60006040820190508181036000830152612a34818561297d565b9050612a436020830184612a0b565b9392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000612a806018836123d9565b9150612a8b82612a4a565b602082019050919050565b60006020820190508181036000830152612aaf81612a73565b9050919050565b6000612ac182611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af357612af2612545565b5b600182019050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20696e69746960008201527f61746556616c69646174696f6e506f6f6c000000000000000000000000000000602082015250565b6000612b5a6031836123d9565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612bec602b836123d9565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612c586015836123d9565b9150612c6382612c22565b602082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000612cc46014836123d9565b9150612ccf82612c8e565b602082019050919050565b60006020820190508181036000830152612cf381612cb7565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000612d306017836123d9565b9150612d3b82612cfa565b602082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000612d9c601a836123d9565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000612e08601d836123d9565b9150612e1382612dd2565b602082019050919050565b60006020820190508181036000830152612e3781612dfb565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000612e74601e836123d9565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b600060088302612f317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ef4565b612f3b8683612ef4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612f78612f73612f6e84611caf565b612f53565b611caf565b9050919050565b6000819050919050565b612f9283612f5d565b612fa6612f9e82612f7f565b848454612f01565b825550505050565b600090565b612fbb612fae565b612fc6818484612f89565b505050565b5b81811015612fea57612fdf600082612fb3565b600181019050612fcc565b5050565b601f82111561302f5761300081612968565b61300984612ee4565b81016020851015613018578190505b61302c61302485612ee4565b830182612fcb565b50505b505050565b600082821c905092915050565b600061305260001984600802613034565b1980831691505092915050565b600061306b8383613041565b9150826002028217905092915050565b6130858383612eaa565b67ffffffffffffffff81111561309e5761309d612eb5565b5b6130a882546127a2565b6130b3828285612fee565b6000601f8311600181146130e257600084156130d0578287013590505b6130da858261305f565b865550613142565b601f1984166130f086612968565b60005b82811015613118578489013582556001820191506020850194506020810190506130f3565b868310156131355784890135613131601f891682613041565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561319757613168816127d3565b61317184612ee4565b81016020851015613180578190505b61319461318c85612ee4565b830182612fcb565b50505b505050565b6131a6838361314b565b67ffffffffffffffff8111156131bf576131be612eb5565b5b6131c982546127a2565b6131d4828285613156565b6000601f83116001811461320357600084156131f1578287013590505b6131fb858261305f565b865550613263565b601f198416613211866127d3565b60005b8281101561323957848901358255600182019150602085019450602081019050613214565b868310156132565784890135613252601f891682613041565b8355505b6001600288020188555050505b50505050505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c86021836123d9565b91506132d38261326c565b604082019050919050565b600060208201905081810360008301526132f7816132bb565b905091905056fea2646970667358221220dd9849e061c699c77e059ea430acf000005922570552a522f8543df7b854489d64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/backend/contractArtifacts/DAO.json b/backend/contractArtifacts/DAO.json index e864c8a..0aded48 100644 --- a/backend/contractArtifacts/DAO.json +++ b/backend/contractArtifacts/DAO.json @@ -6,113 +6,23 @@ { "inputs": [ { - "internalType": "address", - "name": "spender", + "internalType": "contract Reputation", + "name": "reputation_", "type": "address" }, { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", + "internalType": "contract Forum", + "name": "forum_", "type": "address" }, { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", + "internalType": "contract Bench", + "name": "bench_", "type": "address" } ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "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" + "stateMutability": "nonpayable", + "type": "constructor" }, { "anonymous": false, @@ -127,31 +37,6 @@ "name": "PostAdded", "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" - }, { "anonymous": false, "inputs": [ @@ -261,30 +146,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -305,16 +166,21 @@ "type": "function" }, { - "inputs": [], - "name": "decimals", - "outputs": [ + "inputs": [ { - "internalType": "uint8", - "name": "", - "type": "uint8" + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "stateMutability": "pure", + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -345,6 +211,62 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "distributeFeeAmongMembers", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "id", + "type": "string" + } + ], + "name": "emitPostAdded", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "emitValidationPoolInitiated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + }, + { + "internalType": "bool", + "name": "quorumMet", + "type": "bool" + } + ], + "name": "emitValidationPoolResolved", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -357,7 +279,7 @@ "outputs": [ { "internalType": "bool", - "name": "votePasses", + "name": "", "type": "bool" } ], @@ -465,7 +387,7 @@ "outputs": [ { "internalType": "uint256", - "name": "poolIndex", + "name": "", "type": "uint256" } ], @@ -524,16 +446,59 @@ "type": "function" }, { - "inputs": [], - "name": "name", - "outputs": [ + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "stateMutability": "view", + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + }, + { + "internalType": "bool", + "name": "quorumMet", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stakedFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stakedAgainst", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "onValidate", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -551,28 +516,9 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "postIds", - "outputs": [ { "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "", + "name": "postId", "type": "string" } ], @@ -597,6 +543,60 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "propagateReputation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "registerMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "spendAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -649,19 +649,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "totalSupply", @@ -679,53 +666,23 @@ "inputs": [ { "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", + "name": "from", "type": "address" }, { "internalType": "address", - "name": "", + "name": "to", "type": "address" }, { "internalType": "uint256", - "name": "", + "name": "value", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -745,7 +702,7 @@ "inputs": [ { "internalType": "uint256", - "name": "", + "name": "poolIndex", "type": "uint256" } ], @@ -756,21 +713,11 @@ "name": "id", "type": "uint256" }, - { - "internalType": "string", - "name": "postId", - "type": "string" - }, { "internalType": "address", "name": "sender", "type": "address" }, - { - "internalType": "uint256", - "name": "minted", - "type": "uint256" - }, { "internalType": "uint256", "name": "stakeCount", @@ -809,24 +756,41 @@ "type": "tuple" }, { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "endTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "resolved", - "type": "bool" - }, - { - "internalType": "bool", - "name": "outcome", - "type": "bool" + "components": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "resolved", + "type": "bool" + }, + { + "internalType": "bool", + "name": "outcome", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolProps", + "name": "props", + "type": "tuple" }, { "internalType": "bool", @@ -843,8 +807,8 @@ "type": "function" } ], - "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615fde80620004b96000396000f3fe6080604052600436106101665760003560e01c8063642b5bfb116100d1578063a230c5241161008a578063da66863a11610064578063da66863a146105b0578063dd62ed3e146105ed578063e5b4d8271461062a578063f8300fca1461065357610166565b8063a230c524146104ee578063a23362791461052b578063a9059cbb1461057357610166565b8063642b5bfb146103c557806370a08231146103f0578063883802741461042d57806395d89b411461046a578063975762b3146104955780639fbe7c73146104be57610166565b806323b872dd1161012357806323b872dd146102915780632d17c062146102ce578063313ce567146102f757806350cde8ef146103225780635daf08ca1461035f5780635ffc70041461039c57610166565b806306fdde031461016b578063095ea7b31461019657806311aee380146101d357806317906c2e146101fe57806317c182171461022957806318160ddd14610266575b600080fd5b34801561017757600080fd5b50610180610692565b60405161018d9190613c03565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190613ccd565b610724565b6040516101ca9190613d28565b60405180910390f35b3480156101df57600080fd5b506101e8610747565b6040516101f59190613d52565b60405180910390f35b34801561020a57600080fd5b5061021361074d565b6040516102209190613d52565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d6d565b610753565b60405161025d9190613d28565b60405180910390f35b34801561027257600080fd5b5061027b611135565b6040516102889190613d52565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190613d9a565b61113f565b6040516102c59190613d28565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613e19565b61117c565b005b34801561030357600080fd5b5061030c6111a5565b6040516103199190613e88565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613d6d565b6111ae565b6040516103569190613c03565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d6d565b61125a565b6040516103939190613eb2565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190613d9a565b61128d565b005b3480156103d157600080fd5b506103da6112bc565b6040516103e79190613d52565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190613ecd565b6112c2565b6040516104249190613d52565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613efa565b61130a565b6040516104619190613d28565b60405180910390f35b34801561047657600080fd5b5061047f6113a5565b60405161048c9190613c03565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4d565b611437565b005b6104d860048036038101906104d39190614091565b61148a565b6040516104e59190613d52565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190613ecd565b611944565b6040516105229190613d28565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613d6d565b611964565b60405161056a9c9b9a99989796959493929190614301565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613ccd565b611bde565b6040516105a79190613d28565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906143cb565b611c1b565b6040516105e49190614505565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614527565b611d04565b6040516106219190613d52565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614613565b611d8b565b005b34801561065f57600080fd5b5061067a600480360381019061067591906147f7565b61225e565b60405161068993929190614840565b60405180910390f35b6060600380546106a1906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546106cd906148ad565b801561071a5780601f106106ef5761010080835404028352916020019161071a565b820191906000526020600020905b8154815290600101906020018083116106fd57829003601f168201915b5050505050905090565b60008061072f612346565b905061073c81858561234e565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff161515146107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba9061492a565b60405180910390fd5b600080600080600090505b846005015481101561083f5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff161561081f578160020154846108189190614979565b9350610832565b81600201548361082f9190614979565b92505b80806001019150506107ce565b506002846003015461085191906149dc565b8361085c9190614979565b92506002846003015461086f91906149dc565b8261087a9190614979565b915060006002856003015461088f9190614a0d565b146108a4576001836108a19190614979565b92505b83600e01544211806108c757506108b9611135565b82846108c59190614979565b145b610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90614ab0565b60405180910390fd5b836006016001016000600281106109205761091f614ad0565b5b015461092a611135565b6109349190614aff565b82846109409190614979565b8560060160010160016002811061095a57610959614ad0565b5b01546109669190614aff565b11610a9657600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81866000806040516109bc93929190614b41565b60405180910390a183600f0160029054906101000a900460ff1615610a89578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a44959493929190614c11565b6020604051808303816000875af1158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190614c80565b505b6000945050505050611130565b83600601600301600060028110610ab057610aaf614ad0565b5b01548284610abe9190614979565b610ac89190614aff565b84600601600301600160028110610ae257610ae1614ad0565b5b015484610aef9190614aff565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b6093929190614b41565b60405180910390a1600085610b755782610b77565b835b905060008060005b8760050154811015610c7f5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c72576000606489600601600501548760020154610bd99190614aff565b610be391906149dc565b90508860060160060160009054906101000a900460ff1615610c4157610c2e8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083612360565b8084610c3a9190614979565b9350610c70565b610c6f8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612585565b5b505b8080600101915050610b7f565b508715610e815760028760030154610c9791906149dc565b82610ca29190614979565b915060005b8760050154811015610d8d5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cff57508460010160009054906101000a900460ff161515891515145b15610d805760006064896006016005015486886002015487610d219190614aff565b610d2b91906149dc565b610d359190614aff565b610d3f91906149dc565b90508083610d4d9190614979565b9250610d7e308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610ca7565b5060008183610d9c9190614cad565b9050600060028960030154610db19190614a0d565b14610dc657600181610dc39190614979565b90505b610e7a886001018054610dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610e04906148ad565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b50505050508260028b60030154610e6891906149dc565b610e729190614979565b600080612607565b5050610f99565b866003015482610e919190614979565b915060005b8760050154811015610f975787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eee57508460010160009054906101000a900460ff161515891515145b15610f8a5760006064896006016005015460028b60030154610f1091906149dc565b87610f1b9190614cad565b886002015487610f2b9190614aff565b610f3591906149dc565b610f3f9190614aff565b610f4991906149dc565b90508083610f579190614979565b9250610f88308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610e96565b505b60005b6006548110156110625760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fe8611135565b610ff1836112c2565b8b600d01546110009190614aff565b61100a91906149dc565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611052573d6000803e3d6000fd5b5050508080600101915050610f9c565b5086600f0160029054906101000a900460ff1615611128578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b81526004016110e3959493929190614c11565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614c80565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390614d2d565b60405180910390fd5b6000600d6000858152602001908152602001600020905061119f813385856131af565b50505050565b60006009905090565b600981815481106111be57600080fd5b9060005260206000200160009150905080546111d9906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611205906148ad565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112988333836132a5565b6112b78383836112a88787611d04565b6112b29190614979565b61234e565b505050565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061132b33858561131c3389611d04565b6113269190614979565b61234e565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161136893929190614d4d565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113b4906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546113e0906148ad565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905090565b6000600d60008681526020019081526020016000209050826114598533611d04565b101561146c576114698433611d04565b92505b6114778433856132a5565b611483818585856131af565b5050505050565b60008034116114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614df6565b60405180910390fd5b6001891015611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990614e62565b60405180910390fd5b651cae8c13e00089111561155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614ece565b60405180910390fd5b8760016002811061156f5761156e614ad0565b5b6020020135600f60006002811061158957611588614ad0565b5b01546115959190614aff565b886000600281106115a9576115a8614ad0565b5b6020020135600f6001600281106115c3576115c2614ad0565b5b01546115cf9190614aff565b1015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614f3a565b60405180910390fd5b8760016002811061162457611623614ad0565b5b60200201358860006002811061163d5761163c614ad0565b5b60200201351115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614fa6565b60405180910390fd5b8660016002811061169757611696614ad0565b5b6020020135876000600281106116b0576116af614ad0565b5b602002013511156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90615012565b60405180910390fd5b606486111561173a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117319061507e565b60405180910390fd5b600060088c8c60405161174e9291906150ce565b9081526020016040518091039020905060008160020180549050036117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90615133565b60405180910390fd5b600e60008154809291906117bb90615153565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c82600101918261182e929190615352565b503481600d0181905550898160060160010190600261184e929190613b16565b508881600601600301906002611865929190613b16565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426118a99190614979565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118e9929190615473565b506118f43034613339565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161192c9190613d52565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d60205280600052604060002060009150905080600001549080600101805461198d906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546119b9906148ad565b8015611a065780601f106119db57610100808354040283529160200191611a06565b820191906000526020600020905b8154815290600101906020018083116119e957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611a93576020028201915b815481526020019060010190808311611a7f575b5050505050815260200160038201600280602002604051908101604052809291908260028015611ad8576020028201915b815481526020019060010190808311611ac4575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611b5b906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611b87906148ad565b8015611bd45780601f10611ba957610100808354040283529160200191611bd4565b820191906000526020600020905b815481529060010190602001808311611bb757829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614d2d565b60405180910390fd5b6060600060088484604051611c319291906150ce565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611cf75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c65565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc8906155b5565b60405180910390fd5b600a6000815480929190611de490615153565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e26929190615352565b50600060088585604051611e3b9291906150ce565b908152602001604051809103902090506000816002018054905014611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90615647565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611eeb929190615352565b50600080600090505b88889050811015611f8a57888882818110611f1257611f11614ad0565b5b9050604002016000013582611f279190614979565b915082600201898983818110611f4057611f3f614ad0565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f7b91906157f4565b50508080600101915050611ef4565b50620f42408114611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790615874565b60405180910390fd5b60005b8484905081101561204b5782600301858583818110611ff557611ff4614ad0565b5b905060200281019061200791906158a3565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161203c9190615a0a565b50508080600101915050611fd3565b5060008060005b846003018054905081101561216f57600085600301828154811061207957612078614ad0565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790615a8a565b60405180910390fd5b620f4240811315612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d90615b1c565b60405180910390fd5b600081131561215257808461214b9190615b3c565b9350612161565b808361215e9190615b3c565b92505b508080600101915050612052565b50620f42408213156121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90615bf2565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221090615c84565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161224a929190615cd1565b60405180910390a150505050505050505050565b600881805160208101820180518482526020830160208501208183528095505050505050600091509050806000018054612297906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546122c3906148ad565b80156123105780601f106122e557610100808354040283529160200191612310565b820191906000526020600020905b8154815290600101906020018083116122f357829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b61235b83838360016133bb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b25780600260008282546123a69190614979565b92505081905550612485565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561243e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161243593929190614d4d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ce578060026000828254039250508190555061251b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125789190613d52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f75760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125ee9190613eb2565b60405180910390fd5b61260382600083612360565b5050565b6000600c54821061261a578390506131a7565b600060088660405161262c9190615d26565b90815260200160405180910390209050600081600201805490500361265457849150506131a7565b60005b816003018054905081101561278857600082600301828154811061267e5761267d614ad0565b5b906000526020600020906002020160000154121561277b5761276d878360030183815481106126b0576126af614ad0565b5b9060005260206000209060020201604051806040016040529081600082015481526020016001820180546126e3906148ad565b80601f016020809104026020016040519081016040528092919081815260200182805461270f906148ad565b801561275c5780601f106127315761010080835404028352916020019161275c565b820191906000526020600020905b81548152906001019060200180831161273f57829003601f168201915b505050505081525050888888613592565b866127789190615d3d565b95505b8080600101915050612657565b5060005b81600301805490508110156128bd5760008260030182815481106127b3576127b2614ad0565b5b90600052602060002090600202016000015413156128b0576128a2878360030183815481106127e5576127e4614ad0565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612818906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612844906148ad565b80156128915780601f1061286657610100808354040283529160200191612891565b820191906000526020600020905b81548152906001019060200180831161287457829003601f168201915b505050505081525050888888613592565b866128ad9190615d3d565b95505b808060010191505061278c565b506000851315612ba957612b88816040518060a00160405290816000820180546128e6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612912906148ad565b801561295f5780601f106129345761010080835404028352916020019161295f565b820191906000526020600020905b81548152906001019060200180831161294257829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612a755783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906129e3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612b70578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612adf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0b906148ad565b8015612b585780601f10612b2d57610100808354040283529160200191612b58565b820191906000526020600020905b815481529060010190602001808311612b3b57829003601f168201915b50505050508152505081526020019060010190612aa2565b5050505081526020016004820154815250508661375d565b5084816004016000828254612b9d9190614979565b925050819055506131a5565b6000858260040154612bbb9190615b3c565b12612eac57612e81816040518060a0016040529081600082018054612bdf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0b906148ad565b8015612c585780601f10612c2d57610100808354040283529160200191612c58565b820191906000526020600020905b815481529060010190602001808311612c3b57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612d6e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612cdc565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612e69578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612e04906148ad565b8015612e515780601f10612e2657610100808354040283529160200191612e51565b820191906000526020600020905b815481529060010190602001808311612e3457829003601f168201915b50505050508152505081526020019060010190612d9b565b5050505081526020016004820154815250508661375d565b915084612e8d90615d80565b816004016000828254612ea09190614cad565b925050819055506131a4565b848160040154612ebc9190615b3c565b915061318c816040518060a0016040529081600082018054612edd906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612f09906148ad565b8015612f565780601f10612f2b57610100808354040283529160200191612f56565b820191906000526020600020905b815481529060010190602001808311612f3957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561306c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612fda565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131675783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546130d6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054613102906148ad565b801561314f5780601f106131245761010080835404028352916020019161314f565b820191906000526020600020905b81548152906001019060200180831161313257829003601f168201915b50505050508152505081526020019060010190613099565b505050508152602001600482015481525050826004015461318790615d80565b61375d565b826131979190615b3c565b9150600081600401819055505b5b505b949350505050565b83600e01544211156131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90615e14565b60405180910390fd5b600084600501600081548092919061320d90615153565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006132b18484611d04565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146133335781811015613323578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161331a93929190614d4d565b60405180910390fd5b613332848484840360006133bb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016133a29190613eb2565b60405180910390fd5b6133b760008383612360565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361342d5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016134249190613eb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361349f5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016134969190613eb2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561358c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516135839190613d52565b60405180910390a35b50505050565b6000620f42408560000151856135a89190615e34565b6135b29190615eac565b9050600085602001515103613614576000811215613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90615f88565b60405180910390fd5b61360f3082612585565b613754565b6000600b876040516136269190615d26565b908152602001604051809103902086602001516040516136469190615d26565b908152602001604051809103902054905083156136b357600082121561368e578061367090615d80565b8213613685578061368090615d80565b613687565b815b91506136b2565b8061369890615d80565b82126136ad57806136a890615d80565b6136af565b815b91505b5b60006136ec87602001518487806136da57506000871480156136d9575060008a60000151125b5b6001886136e79190614979565b612607565b905080836136fa9190615d3d565b925082600b8960405161370d9190615d26565b9081526020016040518091039020886020015160405161372d9190615d26565b9081526020016040518091039020600082825461374a9190615b3c565b9250508190555050505b95945050505050565b60008060005b8460400151518110156138b75760008560400151828151811061378957613788614ad0565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138a95780600560006006600081548092919061380090615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050613763565b5060005b846040015151811015613b0e576000856040015182815181106138e1576138e0614ad0565b5b60200260200101519050600060018760400151516138ff9190614cad565b83101561393957620f424082600001518761391a9190615e34565b6139249190615eac565b905080846139329190615b3c565b9350613948565b83866139459190615d3d565b90505b6000811315613a835761396030836020015183612360565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a7e57816020015160056000600660008154809291906139d190615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613aff565b80613a8d90615d80565b613a9a83602001516112c2565b1015613ae557613aad82602001516112c2565b81613ab89190615b3c565b85613ac39190615b3c565b9450613ae0826020015130613adb85602001516112c2565b612360565b613afe565b613afd82602001513083613af890615d80565b612360565b5b5b505080806001019150506138bb565b505092915050565b8260028101928215613b45579160200282015b82811115613b44578235825591602001919060010190613b29565b5b509050613b529190613b56565b5090565b5b80821115613b6f576000816000905550600101613b57565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bad578082015181840152602081019050613b92565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd582613b73565b613bdf8185613b7e565b9350613bef818560208601613b8f565b613bf881613bb9565b840191505092915050565b60006020820190508181036000830152613c1d8184613bca565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6482613c39565b9050919050565b613c7481613c59565b8114613c7f57600080fd5b50565b600081359050613c9181613c6b565b92915050565b6000819050919050565b613caa81613c97565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b60008060408385031215613ce457613ce3613c2f565b5b6000613cf285828601613c82565b9250506020613d0385828601613cb8565b9150509250929050565b60008115159050919050565b613d2281613d0d565b82525050565b6000602082019050613d3d6000830184613d19565b92915050565b613d4c81613c97565b82525050565b6000602082019050613d676000830184613d43565b92915050565b600060208284031215613d8357613d82613c2f565b5b6000613d9184828501613cb8565b91505092915050565b600080600060608486031215613db357613db2613c2f565b5b6000613dc186828701613c82565b9350506020613dd286828701613c82565b9250506040613de386828701613cb8565b9150509250925092565b613df681613d0d565b8114613e0157600080fd5b50565b600081359050613e1381613ded565b92915050565b600080600060608486031215613e3257613e31613c2f565b5b6000613e4086828701613cb8565b9350506020613e5186828701613cb8565b9250506040613e6286828701613e04565b9150509250925092565b600060ff82169050919050565b613e8281613e6c565b82525050565b6000602082019050613e9d6000830184613e79565b92915050565b613eac81613c59565b82525050565b6000602082019050613ec76000830184613ea3565b92915050565b600060208284031215613ee357613ee2613c2f565b5b6000613ef184828501613c82565b91505092915050565b600080600060608486031215613f1357613f12613c2f565b5b6000613f2186828701613c82565b9350506020613f3286828701613cb8565b9250506040613f4386828701613cb8565b9150509250925092565b60008060008060808587031215613f6757613f66613c2f565b5b6000613f7587828801613cb8565b9450506020613f8687828801613c82565b9350506040613f9787828801613cb8565b9250506060613fa887828801613e04565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613fd957613fd8613fb4565b5b8235905067ffffffffffffffff811115613ff657613ff5613fb9565b5b60208301915083600182028301111561401257614011613fbe565b5b9250929050565b60008190508260206002028201111561403557614034613fbe565b5b92915050565b60008083601f84011261405157614050613fb4565b5b8235905067ffffffffffffffff81111561406e5761406d613fb9565b5b60208301915083600182028301111561408a57614089613fbe565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140b5576140b4613c2f565b5b60008b013567ffffffffffffffff8111156140d3576140d2613c34565b5b6140df8d828e01613fc3565b9a509a505060206140f28d828e01613cb8565b98505060406141038d828e01614019565b97505060806141148d828e01614019565b96505060c06141258d828e01613cb8565b95505060e06141368d828e01613e04565b9450506101006141488d828e01613e04565b9350506101208b013567ffffffffffffffff81111561416a57614169613c34565b5b6141768d828e0161403b565b92509250509295989b9194979a5092959850565b61419381613c97565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006141c5838361418a565b60208301905092915050565b6000602082019050919050565b6141e781614199565b6141f181846141a4565b92506141fc826141af565b8060005b8381101561422d57815161421487826141b9565b965061421f836141d1565b925050600181019050614200565b505050505050565b61423e81613d0d565b82525050565b60e08201600082015161425a600085018261418a565b50602082015161426d60208501826141de565b50604082015161428060608501826141de565b50606082015161429360a085018261418a565b5060808201516142a660c0850182614235565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142d3826142ac565b6142dd81856142b7565b93506142ed818560208601613b8f565b6142f681613bb9565b840191505092915050565b600061024082019050614317600083018f613d43565b8181036020830152614329818e613bca565b9050614338604083018d613ea3565b614345606083018c613d43565b614352608083018b613d43565b61435f60a083018a614244565b61436d610180830189613d43565b61437b6101a0830188613d43565b6143896101c0830187613d19565b6143976101e0830186613d19565b6143a5610200830185613d19565b8181036102208301526143b881846142c8565b90509d9c50505050505050505050505050565b600080602083850312156143e2576143e1613c2f565b5b600083013567ffffffffffffffff811115614400576143ff613c34565b5b61440c85828601613fc3565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61444d81613c59565b82525050565b604082016000820151614469600085018261418a565b50602082015161447c6020850182614444565b50505050565b600061448e8383614453565b60408301905092915050565b6000602082019050919050565b60006144b282614418565b6144bc8185614423565b93506144c783614434565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b6000602082019050818103600083015261451f81846144a7565b905092915050565b6000806040838503121561453e5761453d613c2f565b5b600061454c85828601613c82565b925050602061455d85828601613c82565b9150509250929050565b60008083601f84011261457d5761457c613fb4565b5b8235905067ffffffffffffffff81111561459a57614599613fb9565b5b6020830191508360408202830111156145b6576145b5613fbe565b5b9250929050565b60008083601f8401126145d3576145d2613fb4565b5b8235905067ffffffffffffffff8111156145f0576145ef613fb9565b5b60208301915083602082028301111561460c5761460b613fbe565b5b9250929050565b600080600080600080606087890312156146305761462f613c2f565b5b600087013567ffffffffffffffff81111561464e5761464d613c34565b5b61465a89828a01614567565b9650965050602087013567ffffffffffffffff81111561467d5761467c613c34565b5b61468989828a01613fc3565b9450945050604087013567ffffffffffffffff8111156146ac576146ab613c34565b5b6146b889828a016145bd565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470482613bb9565b810181811067ffffffffffffffff82111715614723576147226146cc565b5b80604052505050565b6000614736613c25565b905061474282826146fb565b919050565b600067ffffffffffffffff821115614762576147616146cc565b5b61476b82613bb9565b9050602081019050919050565b82818337600083830152505050565b600061479a61479584614747565b61472c565b9050828152602081018484840111156147b6576147b56146c7565b5b6147c1848285614778565b509392505050565b600082601f8301126147de576147dd613fb4565b5b81356147ee848260208601614787565b91505092915050565b60006020828403121561480d5761480c613c2f565b5b600082013567ffffffffffffffff81111561482b5761482a613c34565b5b614837848285016147c9565b91505092915050565b6000606082019050818103600083015261485a8186613bca565b90506148696020830185613ea3565b6148766040830184613d43565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148c557607f821691505b6020821081036148d8576148d761487e565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614914601883613b7e565b915061491f826148de565b602082019050919050565b6000602082019050818103600083015261494381614907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498482613c97565b915061498f83613c97565b92508282019050808211156149a7576149a661494a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149e782613c97565b91506149f283613c97565b925082614a0257614a016149ad565b5b828204905092915050565b6000614a1882613c97565b9150614a2383613c97565b925082614a3357614a326149ad565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602183613b7e565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b0a82613c97565b9150614b1583613c97565b9250828202614b2381613c97565b91508282048414831517614b3a57614b3961494a565b5b5092915050565b6000606082019050614b566000830186613d43565b614b636020830185613d19565b614b706040830184613d19565b949350505050565b60008190508160005260206000209050919050565b60008154614b9a816148ad565b614ba481866142b7565b94506001821660008114614bbf5760018114614bd557614c08565b60ff198316865281151560200286019350614c08565b614bde85614b78565b60005b83811015614c0057815481890152600182019150602081019050614be1565b808801955050505b50505092915050565b600060a082019050614c266000830188613d19565b614c336020830187613d19565b614c406040830186613d43565b614c4d6060830185613d43565b8181036080830152614c5f8184614b8d565b90509695505050505050565b600081519050614c7a81613ca1565b92915050565b600060208284031215614c9657614c95613c2f565b5b6000614ca484828501614c6b565b91505092915050565b6000614cb882613c97565b9150614cc383613c97565b9250828203905081811115614cdb57614cda61494a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614d17601b83613b7e565b9150614d2282614ce1565b602082019050919050565b60006020820190508181036000830152614d4681614d0a565b9050919050565b6000606082019050614d626000830186613ea3565b614d6f6020830185613d43565b614d7c6040830184613d43565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614de0602b83613b7e565b9150614deb82614d84565b604082019050919050565b60006020820190508181036000830152614e0f81614dd3565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614e4c601583613b7e565b9150614e5782614e16565b602082019050919050565b60006020820190508181036000830152614e7b81614e3f565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614eb8601483613b7e565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614f24601783613b7e565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f90601a83613b7e565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614ffc601d83613b7e565b915061500782614fc6565b602082019050919050565b6000602082019050818103600083015261502b81614fef565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615068601e83613b7e565b915061507382615032565b602082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b600081905092915050565b60006150b5838561509e565b93506150c2838584614778565b82840190509392505050565b60006150db8284866150a9565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061511d601583613b7e565b9150615128826150e7565b602082019050919050565b6000602082019050818103600083015261514c81615110565b9050919050565b600061515e82613c97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151905761518f61494a565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584613c97565b61522a565b613c97565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361519b565b67ffffffffffffffff811115615375576153746146cc565b5b61537f82546148ad565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561546e5761543f81614b78565b615448846151bb565b81016020851015615457578190505b61546b615463856151bb565b8301826152a2565b50505b505050565b61547d8383615422565b67ffffffffffffffff811115615496576154956146cc565b5b6154a082546148ad565b6154ab82828561542d565b6000601f8311600181146154da57600084156154c8578287013590505b6154d28582615336565b86555061553a565b601f1984166154e886614b78565b60005b82811015615510578489013582556001820191506020850194506020810190506154eb565b8683101561552d5784890135615529601f891682615318565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b600061559f602583613b7e565b91506155aa82615543565b604082019050919050565b600060208201905081810360008301526155ce81615592565b9050919050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000615631602683613b7e565b915061563c826155d5565b604082019050919050565b6000602082019050818103600083015261566081615624565b9050919050565b6000813561567481613ca1565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6156b68461567d565b9350801983169250808416831791505092915050565b6156d582615234565b6156e86156e182615256565b835461568a565b8255505050565b600081356156fc81613c6b565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff6157258461567d565b9350801983169250808416831791505092915050565b600061575661575161574c84613c39565b61522a565b613c39565b9050919050565b60006157688261573b565b9050919050565b600061577a8261575d565b9050919050565b6000819050919050565b6157948261576f565b6157a76157a082615781565b8354615705565b8255505050565b6000810160008301806157c081615667565b90506157cc81846156cc565b5050506001810160208301806157e1816156ef565b90506157ed818461578b565b5050505050565b6157fe82826157ae565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b600061585e602283613b7e565b915061586982615802565b604082019050919050565b6000602082019050818103600083015261588d81615851565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126158bf576158be615894565b5b80830191505092915050565b6000819050919050565b6158de816158cb565b81146158e957600080fd5b50565b600081356158f9816158d5565b80915050919050565b600061591d615918615913846158cb565b61522a565b6158cb565b9050919050565b6000819050919050565b61593782615902565b61594a61594382615924565b835461568a565b8255505050565b6000808335600160200384360303811261596e5761596d615894565b5b80840192508235915067ffffffffffffffff8211156159905761598f615899565b5b6020830192506001820236038313156159ac576159ab61589e565b5b509250929050565b6159bf838383615352565b505050565b6000810160008301806159d6816158ec565b90506159e2818461592e565b50505060018101602083016159f78185615951565b615a028183866159b4565b505050505050565b615a1482826159c4565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b6000615a74602883613b7e565b9150615a7f82615a18565b604082019050919050565b60006020820190508181036000830152615aa381615a67565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615b06602783613b7e565b9150615b1182615aaa565b604082019050919050565b60006020820190508181036000830152615b3581615af9565b9050919050565b6000615b47826158cb565b9150615b52836158cb565b925082820190508281121560008312168382126000841215161715615b7a57615b7961494a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615bdc602c83613b7e565b9150615be782615b80565b604082019050919050565b60006020820190508181036000830152615c0b81615bcf565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615c6e602d83613b7e565b9150615c7982615c12565b604082019050919050565b60006020820190508181036000830152615c9d81615c61565b9050919050565b6000615cb08385613b7e565b9350615cbd838584614778565b615cc683613bb9565b840190509392505050565b60006020820190508181036000830152615cec818486615ca4565b90509392505050565b6000615d0082613b73565b615d0a818561509e565b9350615d1a818560208601613b8f565b80840191505092915050565b6000615d328284615cf5565b915081905092915050565b6000615d48826158cb565b9150615d53836158cb565b9250828203905081811260008412168282136000851215161715615d7a57615d7961494a565b5b92915050565b6000615d8b826158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008203615dbd57615dbc61494a565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615dfe601883613b7e565b9150615e0982615dc8565b602082019050919050565b60006020820190508181036000830152615e2d81615df1565b9050919050565b6000615e3f826158cb565b9150615e4a836158cb565b9250828202615e58816158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615e9057615e8f61494a565b5b8282058414831517615ea557615ea461494a565b5b5092915050565b6000615eb7826158cb565b9150615ec2836158cb565b925082615ed257615ed16149ad565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615f0b57615f0a61494a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615f72602683613b7e565b9150615f7d82615f16565b604082019050919050565b60006020820190508181036000830152615fa181615f65565b905091905056fea2646970667358221220faf895315a09bcb24dd1abf25a07e4361dd9f821afce5330ad7d41f7fcaa92d764736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106101665760003560e01c8063642b5bfb116100d1578063a230c5241161008a578063da66863a11610064578063da66863a146105b0578063dd62ed3e146105ed578063e5b4d8271461062a578063f8300fca1461065357610166565b8063a230c524146104ee578063a23362791461052b578063a9059cbb1461057357610166565b8063642b5bfb146103c557806370a08231146103f0578063883802741461042d57806395d89b411461046a578063975762b3146104955780639fbe7c73146104be57610166565b806323b872dd1161012357806323b872dd146102915780632d17c062146102ce578063313ce567146102f757806350cde8ef146103225780635daf08ca1461035f5780635ffc70041461039c57610166565b806306fdde031461016b578063095ea7b31461019657806311aee380146101d357806317906c2e146101fe57806317c182171461022957806318160ddd14610266575b600080fd5b34801561017757600080fd5b50610180610692565b60405161018d9190613c03565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190613ccd565b610724565b6040516101ca9190613d28565b60405180910390f35b3480156101df57600080fd5b506101e8610747565b6040516101f59190613d52565b60405180910390f35b34801561020a57600080fd5b5061021361074d565b6040516102209190613d52565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d6d565b610753565b60405161025d9190613d28565b60405180910390f35b34801561027257600080fd5b5061027b611135565b6040516102889190613d52565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190613d9a565b61113f565b6040516102c59190613d28565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613e19565b61117c565b005b34801561030357600080fd5b5061030c6111a5565b6040516103199190613e88565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613d6d565b6111ae565b6040516103569190613c03565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d6d565b61125a565b6040516103939190613eb2565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190613d9a565b61128d565b005b3480156103d157600080fd5b506103da6112bc565b6040516103e79190613d52565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190613ecd565b6112c2565b6040516104249190613d52565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613efa565b61130a565b6040516104619190613d28565b60405180910390f35b34801561047657600080fd5b5061047f6113a5565b60405161048c9190613c03565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4d565b611437565b005b6104d860048036038101906104d39190614091565b61148a565b6040516104e59190613d52565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190613ecd565b611944565b6040516105229190613d28565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613d6d565b611964565b60405161056a9c9b9a99989796959493929190614301565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613ccd565b611bde565b6040516105a79190613d28565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906143cb565b611c1b565b6040516105e49190614505565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614527565b611d04565b6040516106219190613d52565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614613565b611d8b565b005b34801561065f57600080fd5b5061067a600480360381019061067591906147f7565b61225e565b60405161068993929190614840565b60405180910390f35b6060600380546106a1906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546106cd906148ad565b801561071a5780601f106106ef5761010080835404028352916020019161071a565b820191906000526020600020905b8154815290600101906020018083116106fd57829003601f168201915b5050505050905090565b60008061072f612346565b905061073c81858561234e565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff161515146107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba9061492a565b60405180910390fd5b600080600080600090505b846005015481101561083f5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff161561081f578160020154846108189190614979565b9350610832565b81600201548361082f9190614979565b92505b80806001019150506107ce565b506002846003015461085191906149dc565b8361085c9190614979565b92506002846003015461086f91906149dc565b8261087a9190614979565b915060006002856003015461088f9190614a0d565b146108a4576001836108a19190614979565b92505b83600e01544211806108c757506108b9611135565b82846108c59190614979565b145b610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90614ab0565b60405180910390fd5b836006016001016000600281106109205761091f614ad0565b5b015461092a611135565b6109349190614aff565b82846109409190614979565b8560060160010160016002811061095a57610959614ad0565b5b01546109669190614aff565b11610a9657600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81866000806040516109bc93929190614b41565b60405180910390a183600f0160029054906101000a900460ff1615610a89578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a44959493929190614c11565b6020604051808303816000875af1158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190614c80565b505b6000945050505050611130565b83600601600301600060028110610ab057610aaf614ad0565b5b01548284610abe9190614979565b610ac89190614aff565b84600601600301600160028110610ae257610ae1614ad0565b5b015484610aef9190614aff565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b6093929190614b41565b60405180910390a1600085610b755782610b77565b835b905060008060005b8760050154811015610c7f5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c72576000606489600601600501548760020154610bd99190614aff565b610be391906149dc565b90508860060160060160009054906101000a900460ff1615610c4157610c2e8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083612360565b8084610c3a9190614979565b9350610c70565b610c6f8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612585565b5b505b8080600101915050610b7f565b508715610e815760028760030154610c9791906149dc565b82610ca29190614979565b915060005b8760050154811015610d8d5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cff57508460010160009054906101000a900460ff161515891515145b15610d805760006064896006016005015486886002015487610d219190614aff565b610d2b91906149dc565b610d359190614aff565b610d3f91906149dc565b90508083610d4d9190614979565b9250610d7e308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610ca7565b5060008183610d9c9190614cad565b9050600060028960030154610db19190614a0d565b14610dc657600181610dc39190614979565b90505b610e7a886001018054610dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610e04906148ad565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b50505050508260028b60030154610e6891906149dc565b610e729190614979565b600080612607565b5050610f99565b866003015482610e919190614979565b915060005b8760050154811015610f975787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eee57508460010160009054906101000a900460ff161515891515145b15610f8a5760006064896006016005015460028b60030154610f1091906149dc565b87610f1b9190614cad565b886002015487610f2b9190614aff565b610f3591906149dc565b610f3f9190614aff565b610f4991906149dc565b90508083610f579190614979565b9250610f88308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610e96565b505b60005b6006548110156110625760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fe8611135565b610ff1836112c2565b8b600d01546110009190614aff565b61100a91906149dc565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611052573d6000803e3d6000fd5b5050508080600101915050610f9c565b5086600f0160029054906101000a900460ff1615611128578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b81526004016110e3959493929190614c11565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614c80565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390614d2d565b60405180910390fd5b6000600d6000858152602001908152602001600020905061119f813385856131af565b50505050565b60006009905090565b600981815481106111be57600080fd5b9060005260206000200160009150905080546111d9906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611205906148ad565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112988333836132a5565b6112b78383836112a88787611d04565b6112b29190614979565b61234e565b505050565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061132b33858561131c3389611d04565b6113269190614979565b61234e565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161136893929190614d4d565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113b4906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546113e0906148ad565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905090565b6000600d60008681526020019081526020016000209050826114598533611d04565b101561146c576114698433611d04565b92505b6114778433856132a5565b611483818585856131af565b5050505050565b60008034116114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614df6565b60405180910390fd5b6001891015611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990614e62565b60405180910390fd5b651cae8c13e00089111561155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614ece565b60405180910390fd5b8760016002811061156f5761156e614ad0565b5b6020020135600f60006002811061158957611588614ad0565b5b01546115959190614aff565b886000600281106115a9576115a8614ad0565b5b6020020135600f6001600281106115c3576115c2614ad0565b5b01546115cf9190614aff565b1015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614f3a565b60405180910390fd5b8760016002811061162457611623614ad0565b5b60200201358860006002811061163d5761163c614ad0565b5b60200201351115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614fa6565b60405180910390fd5b8660016002811061169757611696614ad0565b5b6020020135876000600281106116b0576116af614ad0565b5b602002013511156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90615012565b60405180910390fd5b606486111561173a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117319061507e565b60405180910390fd5b600060088c8c60405161174e9291906150ce565b9081526020016040518091039020905060008160020180549050036117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90615133565b60405180910390fd5b600e60008154809291906117bb90615153565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c82600101918261182e929190615352565b503481600d0181905550898160060160010190600261184e929190613b16565b508881600601600301906002611865929190613b16565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426118a99190614979565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118e9929190615473565b506118f43034613339565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161192c9190613d52565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d60205280600052604060002060009150905080600001549080600101805461198d906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546119b9906148ad565b8015611a065780601f106119db57610100808354040283529160200191611a06565b820191906000526020600020905b8154815290600101906020018083116119e957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611a93576020028201915b815481526020019060010190808311611a7f575b5050505050815260200160038201600280602002604051908101604052809291908260028015611ad8576020028201915b815481526020019060010190808311611ac4575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611b5b906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611b87906148ad565b8015611bd45780601f10611ba957610100808354040283529160200191611bd4565b820191906000526020600020905b815481529060010190602001808311611bb757829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614d2d565b60405180910390fd5b6060600060088484604051611c319291906150ce565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611cf75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c65565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc8906155b5565b60405180910390fd5b600a6000815480929190611de490615153565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e26929190615352565b50600060088585604051611e3b9291906150ce565b908152602001604051809103902090506000816002018054905014611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90615647565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611eeb929190615352565b50600080600090505b88889050811015611f8a57888882818110611f1257611f11614ad0565b5b9050604002016000013582611f279190614979565b915082600201898983818110611f4057611f3f614ad0565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f7b91906157f4565b50508080600101915050611ef4565b50620f42408114611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790615874565b60405180910390fd5b60005b8484905081101561204b5782600301858583818110611ff557611ff4614ad0565b5b905060200281019061200791906158a3565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161203c9190615a0a565b50508080600101915050611fd3565b5060008060005b846003018054905081101561216f57600085600301828154811061207957612078614ad0565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790615a8a565b60405180910390fd5b620f4240811315612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d90615b1c565b60405180910390fd5b600081131561215257808461214b9190615b3c565b9350612161565b808361215e9190615b3c565b92505b508080600101915050612052565b50620f42408213156121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90615bf2565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221090615c84565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161224a929190615cd1565b60405180910390a150505050505050505050565b600881805160208101820180518482526020830160208501208183528095505050505050600091509050806000018054612297906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546122c3906148ad565b80156123105780601f106122e557610100808354040283529160200191612310565b820191906000526020600020905b8154815290600101906020018083116122f357829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b61235b83838360016133bb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b25780600260008282546123a69190614979565b92505081905550612485565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561243e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161243593929190614d4d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ce578060026000828254039250508190555061251b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125789190613d52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f75760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125ee9190613eb2565b60405180910390fd5b61260382600083612360565b5050565b6000600c54821061261a578390506131a7565b600060088660405161262c9190615d26565b90815260200160405180910390209050600081600201805490500361265457849150506131a7565b60005b816003018054905081101561278857600082600301828154811061267e5761267d614ad0565b5b906000526020600020906002020160000154121561277b5761276d878360030183815481106126b0576126af614ad0565b5b9060005260206000209060020201604051806040016040529081600082015481526020016001820180546126e3906148ad565b80601f016020809104026020016040519081016040528092919081815260200182805461270f906148ad565b801561275c5780601f106127315761010080835404028352916020019161275c565b820191906000526020600020905b81548152906001019060200180831161273f57829003601f168201915b505050505081525050888888613592565b866127789190615d3d565b95505b8080600101915050612657565b5060005b81600301805490508110156128bd5760008260030182815481106127b3576127b2614ad0565b5b90600052602060002090600202016000015413156128b0576128a2878360030183815481106127e5576127e4614ad0565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612818906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612844906148ad565b80156128915780601f1061286657610100808354040283529160200191612891565b820191906000526020600020905b81548152906001019060200180831161287457829003601f168201915b505050505081525050888888613592565b866128ad9190615d3d565b95505b808060010191505061278c565b506000851315612ba957612b88816040518060a00160405290816000820180546128e6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612912906148ad565b801561295f5780601f106129345761010080835404028352916020019161295f565b820191906000526020600020905b81548152906001019060200180831161294257829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612a755783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906129e3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612b70578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612adf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0b906148ad565b8015612b585780601f10612b2d57610100808354040283529160200191612b58565b820191906000526020600020905b815481529060010190602001808311612b3b57829003601f168201915b50505050508152505081526020019060010190612aa2565b5050505081526020016004820154815250508661375d565b5084816004016000828254612b9d9190614979565b925050819055506131a5565b6000858260040154612bbb9190615b3c565b12612eac57612e81816040518060a0016040529081600082018054612bdf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0b906148ad565b8015612c585780601f10612c2d57610100808354040283529160200191612c58565b820191906000526020600020905b815481529060010190602001808311612c3b57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612d6e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612cdc565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612e69578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612e04906148ad565b8015612e515780601f10612e2657610100808354040283529160200191612e51565b820191906000526020600020905b815481529060010190602001808311612e3457829003601f168201915b50505050508152505081526020019060010190612d9b565b5050505081526020016004820154815250508661375d565b915084612e8d90615d80565b816004016000828254612ea09190614cad565b925050819055506131a4565b848160040154612ebc9190615b3c565b915061318c816040518060a0016040529081600082018054612edd906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612f09906148ad565b8015612f565780601f10612f2b57610100808354040283529160200191612f56565b820191906000526020600020905b815481529060010190602001808311612f3957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561306c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612fda565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131675783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546130d6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054613102906148ad565b801561314f5780601f106131245761010080835404028352916020019161314f565b820191906000526020600020905b81548152906001019060200180831161313257829003601f168201915b50505050508152505081526020019060010190613099565b505050508152602001600482015481525050826004015461318790615d80565b61375d565b826131979190615b3c565b9150600081600401819055505b5b505b949350505050565b83600e01544211156131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90615e14565b60405180910390fd5b600084600501600081548092919061320d90615153565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006132b18484611d04565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146133335781811015613323578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161331a93929190614d4d565b60405180910390fd5b613332848484840360006133bb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016133a29190613eb2565b60405180910390fd5b6133b760008383612360565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361342d5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016134249190613eb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361349f5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016134969190613eb2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561358c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516135839190613d52565b60405180910390a35b50505050565b6000620f42408560000151856135a89190615e34565b6135b29190615eac565b9050600085602001515103613614576000811215613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90615f88565b60405180910390fd5b61360f3082612585565b613754565b6000600b876040516136269190615d26565b908152602001604051809103902086602001516040516136469190615d26565b908152602001604051809103902054905083156136b357600082121561368e578061367090615d80565b8213613685578061368090615d80565b613687565b815b91506136b2565b8061369890615d80565b82126136ad57806136a890615d80565b6136af565b815b91505b5b60006136ec87602001518487806136da57506000871480156136d9575060008a60000151125b5b6001886136e79190614979565b612607565b905080836136fa9190615d3d565b925082600b8960405161370d9190615d26565b9081526020016040518091039020886020015160405161372d9190615d26565b9081526020016040518091039020600082825461374a9190615b3c565b9250508190555050505b95945050505050565b60008060005b8460400151518110156138b75760008560400151828151811061378957613788614ad0565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138a95780600560006006600081548092919061380090615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050613763565b5060005b846040015151811015613b0e576000856040015182815181106138e1576138e0614ad0565b5b60200260200101519050600060018760400151516138ff9190614cad565b83101561393957620f424082600001518761391a9190615e34565b6139249190615eac565b905080846139329190615b3c565b9350613948565b83866139459190615d3d565b90505b6000811315613a835761396030836020015183612360565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a7e57816020015160056000600660008154809291906139d190615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613aff565b80613a8d90615d80565b613a9a83602001516112c2565b1015613ae557613aad82602001516112c2565b81613ab89190615b3c565b85613ac39190615b3c565b9450613ae0826020015130613adb85602001516112c2565b612360565b613afe565b613afd82602001513083613af890615d80565b612360565b5b5b505080806001019150506138bb565b505092915050565b8260028101928215613b45579160200282015b82811115613b44578235825591602001919060010190613b29565b5b509050613b529190613b56565b5090565b5b80821115613b6f576000816000905550600101613b57565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bad578082015181840152602081019050613b92565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd582613b73565b613bdf8185613b7e565b9350613bef818560208601613b8f565b613bf881613bb9565b840191505092915050565b60006020820190508181036000830152613c1d8184613bca565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6482613c39565b9050919050565b613c7481613c59565b8114613c7f57600080fd5b50565b600081359050613c9181613c6b565b92915050565b6000819050919050565b613caa81613c97565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b60008060408385031215613ce457613ce3613c2f565b5b6000613cf285828601613c82565b9250506020613d0385828601613cb8565b9150509250929050565b60008115159050919050565b613d2281613d0d565b82525050565b6000602082019050613d3d6000830184613d19565b92915050565b613d4c81613c97565b82525050565b6000602082019050613d676000830184613d43565b92915050565b600060208284031215613d8357613d82613c2f565b5b6000613d9184828501613cb8565b91505092915050565b600080600060608486031215613db357613db2613c2f565b5b6000613dc186828701613c82565b9350506020613dd286828701613c82565b9250506040613de386828701613cb8565b9150509250925092565b613df681613d0d565b8114613e0157600080fd5b50565b600081359050613e1381613ded565b92915050565b600080600060608486031215613e3257613e31613c2f565b5b6000613e4086828701613cb8565b9350506020613e5186828701613cb8565b9250506040613e6286828701613e04565b9150509250925092565b600060ff82169050919050565b613e8281613e6c565b82525050565b6000602082019050613e9d6000830184613e79565b92915050565b613eac81613c59565b82525050565b6000602082019050613ec76000830184613ea3565b92915050565b600060208284031215613ee357613ee2613c2f565b5b6000613ef184828501613c82565b91505092915050565b600080600060608486031215613f1357613f12613c2f565b5b6000613f2186828701613c82565b9350506020613f3286828701613cb8565b9250506040613f4386828701613cb8565b9150509250925092565b60008060008060808587031215613f6757613f66613c2f565b5b6000613f7587828801613cb8565b9450506020613f8687828801613c82565b9350506040613f9787828801613cb8565b9250506060613fa887828801613e04565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613fd957613fd8613fb4565b5b8235905067ffffffffffffffff811115613ff657613ff5613fb9565b5b60208301915083600182028301111561401257614011613fbe565b5b9250929050565b60008190508260206002028201111561403557614034613fbe565b5b92915050565b60008083601f84011261405157614050613fb4565b5b8235905067ffffffffffffffff81111561406e5761406d613fb9565b5b60208301915083600182028301111561408a57614089613fbe565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140b5576140b4613c2f565b5b60008b013567ffffffffffffffff8111156140d3576140d2613c34565b5b6140df8d828e01613fc3565b9a509a505060206140f28d828e01613cb8565b98505060406141038d828e01614019565b97505060806141148d828e01614019565b96505060c06141258d828e01613cb8565b95505060e06141368d828e01613e04565b9450506101006141488d828e01613e04565b9350506101208b013567ffffffffffffffff81111561416a57614169613c34565b5b6141768d828e0161403b565b92509250509295989b9194979a5092959850565b61419381613c97565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006141c5838361418a565b60208301905092915050565b6000602082019050919050565b6141e781614199565b6141f181846141a4565b92506141fc826141af565b8060005b8381101561422d57815161421487826141b9565b965061421f836141d1565b925050600181019050614200565b505050505050565b61423e81613d0d565b82525050565b60e08201600082015161425a600085018261418a565b50602082015161426d60208501826141de565b50604082015161428060608501826141de565b50606082015161429360a085018261418a565b5060808201516142a660c0850182614235565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142d3826142ac565b6142dd81856142b7565b93506142ed818560208601613b8f565b6142f681613bb9565b840191505092915050565b600061024082019050614317600083018f613d43565b8181036020830152614329818e613bca565b9050614338604083018d613ea3565b614345606083018c613d43565b614352608083018b613d43565b61435f60a083018a614244565b61436d610180830189613d43565b61437b6101a0830188613d43565b6143896101c0830187613d19565b6143976101e0830186613d19565b6143a5610200830185613d19565b8181036102208301526143b881846142c8565b90509d9c50505050505050505050505050565b600080602083850312156143e2576143e1613c2f565b5b600083013567ffffffffffffffff811115614400576143ff613c34565b5b61440c85828601613fc3565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61444d81613c59565b82525050565b604082016000820151614469600085018261418a565b50602082015161447c6020850182614444565b50505050565b600061448e8383614453565b60408301905092915050565b6000602082019050919050565b60006144b282614418565b6144bc8185614423565b93506144c783614434565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b6000602082019050818103600083015261451f81846144a7565b905092915050565b6000806040838503121561453e5761453d613c2f565b5b600061454c85828601613c82565b925050602061455d85828601613c82565b9150509250929050565b60008083601f84011261457d5761457c613fb4565b5b8235905067ffffffffffffffff81111561459a57614599613fb9565b5b6020830191508360408202830111156145b6576145b5613fbe565b5b9250929050565b60008083601f8401126145d3576145d2613fb4565b5b8235905067ffffffffffffffff8111156145f0576145ef613fb9565b5b60208301915083602082028301111561460c5761460b613fbe565b5b9250929050565b600080600080600080606087890312156146305761462f613c2f565b5b600087013567ffffffffffffffff81111561464e5761464d613c34565b5b61465a89828a01614567565b9650965050602087013567ffffffffffffffff81111561467d5761467c613c34565b5b61468989828a01613fc3565b9450945050604087013567ffffffffffffffff8111156146ac576146ab613c34565b5b6146b889828a016145bd565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470482613bb9565b810181811067ffffffffffffffff82111715614723576147226146cc565b5b80604052505050565b6000614736613c25565b905061474282826146fb565b919050565b600067ffffffffffffffff821115614762576147616146cc565b5b61476b82613bb9565b9050602081019050919050565b82818337600083830152505050565b600061479a61479584614747565b61472c565b9050828152602081018484840111156147b6576147b56146c7565b5b6147c1848285614778565b509392505050565b600082601f8301126147de576147dd613fb4565b5b81356147ee848260208601614787565b91505092915050565b60006020828403121561480d5761480c613c2f565b5b600082013567ffffffffffffffff81111561482b5761482a613c34565b5b614837848285016147c9565b91505092915050565b6000606082019050818103600083015261485a8186613bca565b90506148696020830185613ea3565b6148766040830184613d43565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148c557607f821691505b6020821081036148d8576148d761487e565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614914601883613b7e565b915061491f826148de565b602082019050919050565b6000602082019050818103600083015261494381614907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498482613c97565b915061498f83613c97565b92508282019050808211156149a7576149a661494a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149e782613c97565b91506149f283613c97565b925082614a0257614a016149ad565b5b828204905092915050565b6000614a1882613c97565b9150614a2383613c97565b925082614a3357614a326149ad565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602183613b7e565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b0a82613c97565b9150614b1583613c97565b9250828202614b2381613c97565b91508282048414831517614b3a57614b3961494a565b5b5092915050565b6000606082019050614b566000830186613d43565b614b636020830185613d19565b614b706040830184613d19565b949350505050565b60008190508160005260206000209050919050565b60008154614b9a816148ad565b614ba481866142b7565b94506001821660008114614bbf5760018114614bd557614c08565b60ff198316865281151560200286019350614c08565b614bde85614b78565b60005b83811015614c0057815481890152600182019150602081019050614be1565b808801955050505b50505092915050565b600060a082019050614c266000830188613d19565b614c336020830187613d19565b614c406040830186613d43565b614c4d6060830185613d43565b8181036080830152614c5f8184614b8d565b90509695505050505050565b600081519050614c7a81613ca1565b92915050565b600060208284031215614c9657614c95613c2f565b5b6000614ca484828501614c6b565b91505092915050565b6000614cb882613c97565b9150614cc383613c97565b9250828203905081811115614cdb57614cda61494a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614d17601b83613b7e565b9150614d2282614ce1565b602082019050919050565b60006020820190508181036000830152614d4681614d0a565b9050919050565b6000606082019050614d626000830186613ea3565b614d6f6020830185613d43565b614d7c6040830184613d43565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614de0602b83613b7e565b9150614deb82614d84565b604082019050919050565b60006020820190508181036000830152614e0f81614dd3565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614e4c601583613b7e565b9150614e5782614e16565b602082019050919050565b60006020820190508181036000830152614e7b81614e3f565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614eb8601483613b7e565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614f24601783613b7e565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f90601a83613b7e565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614ffc601d83613b7e565b915061500782614fc6565b602082019050919050565b6000602082019050818103600083015261502b81614fef565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615068601e83613b7e565b915061507382615032565b602082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b600081905092915050565b60006150b5838561509e565b93506150c2838584614778565b82840190509392505050565b60006150db8284866150a9565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061511d601583613b7e565b9150615128826150e7565b602082019050919050565b6000602082019050818103600083015261514c81615110565b9050919050565b600061515e82613c97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151905761518f61494a565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584613c97565b61522a565b613c97565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361519b565b67ffffffffffffffff811115615375576153746146cc565b5b61537f82546148ad565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561546e5761543f81614b78565b615448846151bb565b81016020851015615457578190505b61546b615463856151bb565b8301826152a2565b50505b505050565b61547d8383615422565b67ffffffffffffffff811115615496576154956146cc565b5b6154a082546148ad565b6154ab82828561542d565b6000601f8311600181146154da57600084156154c8578287013590505b6154d28582615336565b86555061553a565b601f1984166154e886614b78565b60005b82811015615510578489013582556001820191506020850194506020810190506154eb565b8683101561552d5784890135615529601f891682615318565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b600061559f602583613b7e565b91506155aa82615543565b604082019050919050565b600060208201905081810360008301526155ce81615592565b9050919050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000615631602683613b7e565b915061563c826155d5565b604082019050919050565b6000602082019050818103600083015261566081615624565b9050919050565b6000813561567481613ca1565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6156b68461567d565b9350801983169250808416831791505092915050565b6156d582615234565b6156e86156e182615256565b835461568a565b8255505050565b600081356156fc81613c6b565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff6157258461567d565b9350801983169250808416831791505092915050565b600061575661575161574c84613c39565b61522a565b613c39565b9050919050565b60006157688261573b565b9050919050565b600061577a8261575d565b9050919050565b6000819050919050565b6157948261576f565b6157a76157a082615781565b8354615705565b8255505050565b6000810160008301806157c081615667565b90506157cc81846156cc565b5050506001810160208301806157e1816156ef565b90506157ed818461578b565b5050505050565b6157fe82826157ae565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b600061585e602283613b7e565b915061586982615802565b604082019050919050565b6000602082019050818103600083015261588d81615851565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126158bf576158be615894565b5b80830191505092915050565b6000819050919050565b6158de816158cb565b81146158e957600080fd5b50565b600081356158f9816158d5565b80915050919050565b600061591d615918615913846158cb565b61522a565b6158cb565b9050919050565b6000819050919050565b61593782615902565b61594a61594382615924565b835461568a565b8255505050565b6000808335600160200384360303811261596e5761596d615894565b5b80840192508235915067ffffffffffffffff8211156159905761598f615899565b5b6020830192506001820236038313156159ac576159ab61589e565b5b509250929050565b6159bf838383615352565b505050565b6000810160008301806159d6816158ec565b90506159e2818461592e565b50505060018101602083016159f78185615951565b615a028183866159b4565b505050505050565b615a1482826159c4565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b6000615a74602883613b7e565b9150615a7f82615a18565b604082019050919050565b60006020820190508181036000830152615aa381615a67565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615b06602783613b7e565b9150615b1182615aaa565b604082019050919050565b60006020820190508181036000830152615b3581615af9565b9050919050565b6000615b47826158cb565b9150615b52836158cb565b925082820190508281121560008312168382126000841215161715615b7a57615b7961494a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615bdc602c83613b7e565b9150615be782615b80565b604082019050919050565b60006020820190508181036000830152615c0b81615bcf565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615c6e602d83613b7e565b9150615c7982615c12565b604082019050919050565b60006020820190508181036000830152615c9d81615c61565b9050919050565b6000615cb08385613b7e565b9350615cbd838584614778565b615cc683613bb9565b840190509392505050565b60006020820190508181036000830152615cec818486615ca4565b90509392505050565b6000615d0082613b73565b615d0a818561509e565b9350615d1a818560208601613b8f565b80840191505092915050565b6000615d328284615cf5565b915081905092915050565b6000615d48826158cb565b9150615d53836158cb565b9250828203905081811260008412168282136000851215161715615d7a57615d7961494a565b5b92915050565b6000615d8b826158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008203615dbd57615dbc61494a565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615dfe601883613b7e565b9150615e0982615dc8565b602082019050919050565b60006020820190508181036000830152615e2d81615df1565b9050919050565b6000615e3f826158cb565b9150615e4a836158cb565b9250828202615e58816158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615e9057615e8f61494a565b5b8282058414831517615ea557615ea461494a565b5b5092915050565b6000615eb7826158cb565b9150615ec2836158cb565b925082615ed257615ed16149ad565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615f0b57615f0a61494a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615f72602683613b7e565b9150615f7d82615f16565b604082019050919050565b60006020820190508181036000830152615fa181615f65565b905091905056fea2646970667358221220faf895315a09bcb24dd1abf25a07e4361dd9f821afce5330ad7d41f7fcaa92d764736f6c63430008180033", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200439c3803806200439c8339818101604052810190620000379190620003bb565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000154919062000482565b600060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b8152600401620001e5919062000482565b600060405180830381600087803b1580156200020057600080fd5b505af115801562000215573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000276919062000482565b600060405180830381600087803b1580156200029157600080fd5b505af1158015620002a6573d6000803e3d6000fd5b505050505050506200049f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002e582620002b8565b9050919050565b6000620002f982620002d8565b9050919050565b6200030b81620002ec565b81146200031757600080fd5b50565b6000815190506200032b8162000300565b92915050565b60006200033e82620002d8565b9050919050565b620003508162000331565b81146200035c57600080fd5b50565b600081519050620003708162000345565b92915050565b60006200038382620002d8565b9050919050565b620003958162000376565b8114620003a157600080fd5b50565b600081519050620003b5816200038a565b92915050565b600080600060608486031215620003d757620003d6620002b3565b5b6000620003e7868287016200031a565b9350506020620003fa868287016200035f565b92505060406200040d86828701620003a4565b9150509250925092565b6000819050919050565b6000620004426200043c6200043684620002b8565b62000417565b620002b8565b9050919050565b6000620004568262000421565b9050919050565b60006200046a8262000449565b9050919050565b6200047c816200045d565b82525050565b600060208201905062000499600083018462000471565b92915050565b613eed80620004af6000396000f3fe6080604052600436106101c25760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f1461065e578063e5b4d82714610687578063f8300fca146106b0578063fcb4888e146106ef576101c2565b8063a233627914610578578063da66863a146105bb578063dc00bbfe146105f8578063dd62ed3e14610621576101c2565b80639dc29fac116100d15780639dc29fac146104b95780639fbe7c73146104e25780639fd0987214610512578063a230c5241461053b576101c2565b8063883802741461042a5780638ce516da14610467578063975762b314610490576101c2565b806340c10f19116101645780635ffc70041161013e5780635ffc700414610370578063642b5bfb1461039957806370a08231146103c457806378e21c6e14610401576101c2565b806340c10f19146102e15780635c253c0b1461030a5780635daf08ca14610333576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc610718565b6040516101e99190611d99565b60405180910390f35b3480156101fe57600080fd5b5061020761071e565b6040516102149190611d99565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611df4565b6107b6565b6040516102519190611e3c565b60405180910390f35b34801561026657600080fd5b5061026f61085d565b60405161027c9190611d99565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190611f46565b6108f4565b005b6102b6610a5a565b005b3480156102c457600080fd5b506102df60048036038101906102da9190611ff5565b610b60565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612048565b610c43565b005b34801561031657600080fd5b50610331600480360381019061032c91906121c9565b610dbc565b005b34801561033f57600080fd5b5061035a60048036038101906103559190611df4565b610df6565b6040516103679190612221565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061223c565b610e29565b005b3480156103a557600080fd5b506103ae610ebd565b6040516103bb9190611d99565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061228f565b610f55565b6040516103f89190611d99565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906122bc565b610ff9565b005b34801561043657600080fd5b50610451600480360381019061044c919061230f565b611039565b60405161045e9190611e3c565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061223c565b611159565b005b34801561049c57600080fd5b506104b760048036038101906104b29190612362565b6112d5565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612048565b611397565b005b6104fc60048036038101906104f79190612441565b611510565b6040516105099190611d99565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612570565b6115d5565b005b34801561054757600080fd5b50610562600480360381019061055d919061228f565b61167f565b60405161056f9190611e3c565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190611df4565b61169f565b6040516105b2979695949392919061284b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906128cc565b611772565b6040516105ef9190612a06565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611df4565b61181f565b005b34801561062d57600080fd5b5061064860048036038101906106439190612a28565b611859565b6040516106559190611d99565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061223c565b611900565b005b34801561069357600080fd5b506106ae60048036038101906106a99190612b14565b611994565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906128cc565b611a35565b6040516106e693929190612c12565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061228f565b611aea565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612c65565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b81526004016108139190611d99565b6020604051808303816000875af1158015610832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108569190612ca7565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef9190612c65565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612d46565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a1f96959493929190612d93565b600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b5c5760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ab59190612e1e565b831015610af757610ac461085d565b610acd83610f55565b34610ad89190612e52565b610ae29190612ec3565b90508084610af09190612ef4565b9350610b06565b8334610b039190612e1e565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b4c573d6000803e3d6000fd5b5050508080600101915050610a62565b5050565b81610b6a33610f55565b1015610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612f9a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c0c9493929190612fba565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cec5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613071565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d86929190613091565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610deb91906130ba565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ffc70048484846040518463ffffffff1660e01b8152600401610e86939291906130dc565b600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f509190612c65565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610fb19190612221565b602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612c65565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161102c93929190613113565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c67338686611085338a611859565b61108f9190612ef4565b6040518463ffffffff1660e01b81526004016110ad939291906130dc565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161111c9392919061314a565b600060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112025750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906131f3565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161129e939291906130dc565b600060405180830381600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b50505050505050565b816112e08433611859565b10156112f3576112f08333611859565b91505b6112fe833384611900565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b815260040161135f9493929190612fba565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690613285565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b81526004016114da929190613091565b600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016115829b9a999897969594939291906132eb565b60206040518083038185885af11580156115a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115c59190612c65565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161163794939291906133e0565b6020604051808303816000875af1158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613441565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006116ac611ce7565b6116b4611d24565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016117139190611d99565b600060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117599190613797565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b81526004016117d1929190613875565b600060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061181791906139ac565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8160405161184e9190611d99565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016118b79291906139f5565b602060405180830381865afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190612c65565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b815260040161195d939291906130dc565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b81526004016119fb9796959493929190613d0e565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611a97929190613875565b600060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611add9190613d6e565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b935750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613e4f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce457806003600060046000815480929190611c3b90613e6f565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611d01611d5e565b8152602001611d0e611d5e565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b611d9381611d80565b82525050565b6000602082019050611dae6000830184611d8a565b92915050565b6000604051905090565b600080fd5b600080fd5b611dd181611d80565b8114611ddc57600080fd5b50565b600081359050611dee81611dc8565b92915050565b600060208284031215611e0a57611e09611dbe565b5b6000611e1884828501611ddf565b91505092915050565b60008115159050919050565b611e3681611e21565b82525050565b6000602082019050611e516000830184611e2d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e8282611e57565b9050919050565b611e9281611e77565b8114611e9d57600080fd5b50565b600081359050611eaf81611e89565b92915050565b611ebe81611e21565b8114611ec957600080fd5b50565b600081359050611edb81611eb5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0657611f05611ee1565b5b8235905067ffffffffffffffff811115611f2357611f22611ee6565b5b602083019150836001820283011115611f3f57611f3e611eeb565b5b9250929050565b600080600080600080600060c0888a031215611f6557611f64611dbe565b5b6000611f738a828b01611ea0565b9750506020611f848a828b01611ecc565b9650506040611f958a828b01611ecc565b9550506060611fa68a828b01611ddf565b9450506080611fb78a828b01611ddf565b93505060a088013567ffffffffffffffff811115611fd857611fd7611dc3565b5b611fe48a828b01611ef0565b925092505092959891949750929550565b60008060006060848603121561200e5761200d611dbe565b5b600061201c86828701611ddf565b935050602061202d86828701611ddf565b925050604061203e86828701611ecc565b9150509250925092565b6000806040838503121561205f5761205e611dbe565b5b600061206d85828601611ea0565b925050602061207e85828601611ddf565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120d68261208d565b810181811067ffffffffffffffff821117156120f5576120f461209e565b5b80604052505050565b6000612108611db4565b905061211482826120cd565b919050565b600067ffffffffffffffff8211156121345761213361209e565b5b61213d8261208d565b9050602081019050919050565b82818337600083830152505050565b600061216c61216784612119565b6120fe565b90508281526020810184848401111561218857612187612088565b5b61219384828561214a565b509392505050565b600082601f8301126121b0576121af611ee1565b5b81356121c0848260208601612159565b91505092915050565b6000602082840312156121df576121de611dbe565b5b600082013567ffffffffffffffff8111156121fd576121fc611dc3565b5b6122098482850161219b565b91505092915050565b61221b81611e77565b82525050565b60006020820190506122366000830184612212565b92915050565b60008060006060848603121561225557612254611dbe565b5b600061226386828701611ea0565b935050602061227486828701611ea0565b925050604061228586828701611ddf565b9150509250925092565b6000602082840312156122a5576122a4611dbe565b5b60006122b384828501611ea0565b91505092915050565b6000806000606084860312156122d5576122d4611dbe565b5b60006122e386828701611ddf565b93505060206122f486828701611ecc565b925050604061230586828701611ecc565b9150509250925092565b60008060006060848603121561232857612327611dbe565b5b600061233686828701611ea0565b935050602061234786828701611ddf565b925050604061235886828701611ddf565b9150509250925092565b6000806000806080858703121561237c5761237b611dbe565b5b600061238a87828801611ddf565b945050602061239b87828801611ea0565b93505060406123ac87828801611ddf565b92505060606123bd87828801611ecc565b91505092959194509250565b60008083601f8401126123df576123de611ee1565b5b8235905067ffffffffffffffff8111156123fc576123fb611ee6565b5b60208301915083600182028301111561241857612417611eeb565b5b9250929050565b60008190508260206002028201111561243b5761243a611eeb565b5b92915050565b6000806000806000806000806000806101408b8d03121561246557612464611dbe565b5b60008b013567ffffffffffffffff81111561248357612482611dc3565b5b61248f8d828e016123c9565b9a509a505060206124a28d828e01611ddf565b98505060406124b38d828e0161241f565b97505060806124c48d828e0161241f565b96505060c06124d58d828e01611ddf565b95505060e06124e68d828e01611ecc565b9450506101006124f88d828e01611ecc565b9350506101208b013567ffffffffffffffff81111561251a57612519611dc3565b5b6125268d828e01611ef0565b92509250509295989b9194979a5092959850565b6000819050919050565b61254d8161253a565b811461255857600080fd5b50565b60008135905061256a81612544565b92915050565b6000806040838503121561258757612586611dbe565b5b600083013567ffffffffffffffff8111156125a5576125a4611dc3565b5b6125b18582860161219b565b92505060206125c28582860161255b565b9150509250929050565b6125d581611d80565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061260783836125cc565b60208301905092915050565b6000602082019050919050565b612629816125db565b61263381846125e6565b925061263e826125f1565b8060005b8381101561266f57815161265687826125fb565b965061266183612613565b925050600181019050612642565b505050505050565b61268081611e21565b82525050565b60e08201600082015161269c60008501826125cc565b5060208201516126af6020850182612620565b5060408201516126c26060850182612620565b5060608201516126d560a08501826125cc565b5060808201516126e860c0850182612677565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272857808201518184015260208101905061270d565b60008484015250505050565b600061273f826126ee565b61274981856126f9565b935061275981856020860161270a565b6127628161208d565b840191505092915050565b600060c083016000830151848203600086015261278a8282612734565b915050602083015161279f60208601826125cc565b5060408301516127b260408601826125cc565b5060608301516127c560608601826125cc565b5060808301516127d86080860182612677565b5060a08301516127eb60a0860182612677565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b600061281d826127f6565b6128278185612801565b935061283781856020860161270a565b6128408161208d565b840191505092915050565b60006101a082019050612861600083018a611d8a565b61286e6020830189612212565b61287b6040830188611d8a565b6128886060830187612686565b81810361014083015261289b818661276d565b90506128ab610160830185611e2d565b8181036101808301526128be8184612812565b905098975050505050505050565b600080602083850312156128e3576128e2611dbe565b5b600083013567ffffffffffffffff81111561290157612900611dc3565b5b61290d858286016123c9565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61294e81611e77565b82525050565b60408201600082015161296a60008501826125cc565b50602082015161297d6020850182612945565b50505050565b600061298f8383612954565b60408301905092915050565b6000602082019050919050565b60006129b382612919565b6129bd8185612924565b93506129c883612935565b8060005b838110156129f95781516129e08882612983565b97506129eb8361299b565b9250506001810190506129cc565b5085935050505092915050565b60006020820190508181036000830152612a2081846129a8565b905092915050565b60008060408385031215612a3f57612a3e611dbe565b5b6000612a4d85828601611ea0565b9250506020612a5e85828601611ea0565b9150509250929050565b60008083601f840112612a7e57612a7d611ee1565b5b8235905067ffffffffffffffff811115612a9b57612a9a611ee6565b5b602083019150836040820283011115612ab757612ab6611eeb565b5b9250929050565b60008083601f840112612ad457612ad3611ee1565b5b8235905067ffffffffffffffff811115612af157612af0611ee6565b5b602083019150836020820283011115612b0d57612b0c611eeb565b5b9250929050565b60008060008060008060608789031215612b3157612b30611dbe565b5b600087013567ffffffffffffffff811115612b4f57612b4e611dc3565b5b612b5b89828a01612a68565b9650965050602087013567ffffffffffffffff811115612b7e57612b7d611dc3565b5b612b8a89828a016123c9565b9450945050604087013567ffffffffffffffff811115612bad57612bac611dc3565b5b612bb989828a01612abe565b92509250509295509295509295565b600082825260208201905092915050565b6000612be4826126ee565b612bee8185612bc8565b9350612bfe81856020860161270a565b612c078161208d565b840191505092915050565b60006060820190508181036000830152612c2c8186612bd9565b9050612c3b6020830185612212565b612c486040830184611d8a565b949350505050565b600081519050612c5f81611dc8565b92915050565b600060208284031215612c7b57612c7a611dbe565b5b6000612c8984828501612c50565b91505092915050565b600081519050612ca181611eb5565b92915050565b600060208284031215612cbd57612cbc611dbe565b5b6000612ccb84828501612c92565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612d30602b83612bc8565b9150612d3b82612cd4565b604082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b6000612d728385612801565b9350612d7f83858461214a565b612d888361208d565b840190509392505050565b600060a082019050612da86000830189611e2d565b612db56020830188611e2d565b612dc26040830187611d8a565b612dcf6060830186611d8a565b8181036080830152612de2818486612d66565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2982611d80565b9150612e3483611d80565b9250828203905081811115612e4c57612e4b612def565b5b92915050565b6000612e5d82611d80565b9150612e6883611d80565b9250828202612e7681611d80565b91508282048414831517612e8d57612e8c612def565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ece82611d80565b9150612ed983611d80565b925082612ee957612ee8612e94565b5b828204905092915050565b6000612eff82611d80565b9150612f0a83611d80565b9250828201905080821115612f2257612f21612def565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b6000612f84602783612bc8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b6000608082019050612fcf6000830187611d8a565b612fdc6020830186612212565b612fe96040830185611d8a565b612ff66060830184611e2d565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061305b602583612bc8565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b60006040820190506130a66000830185612212565b6130b36020830184611d8a565b9392505050565b600060208201905081810360008301526130d48184612bd9565b905092915050565b60006060820190506130f16000830186612212565b6130fe6020830185612212565b61310b6040830184611d8a565b949350505050565b60006060820190506131286000830186611d8a565b6131356020830185611e2d565b6131426040830184611e2d565b949350505050565b600060608201905061315f6000830186612212565b61316c6020830185611d8a565b6131796040830184611d8a565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b60006131dd602783612bc8565b91506131e882613181565b604082019050919050565b6000602082019050818103600083015261320c816131d0565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061326f602583612bc8565b915061327a82613213565b604082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b60006132b18385612bc8565b93506132be83858461214a565b6132c78361208d565b840190509392505050565b82818337505050565b6132e7604083836132d2565b5050565b600061016082019050613301600083018e612212565b8181036020830152613314818c8e6132a5565b9050613323604083018b611d8a565b613330606083018a6132db565b61333d60a08301896132db565b61334a60e0830188611d8a565b613358610100830187611e2d565b613366610120830186611e2d565b81810361014083015261337a818486612d66565b90509c9b505050505050505050505050565b6133958161253a565b82525050565b6000819050919050565b6000819050919050565b60006133ca6133c56133c08461339b565b6133a5565b611d80565b9050919050565b6133da816133af565b82525050565b600060808201905081810360008301526133fa8187612bd9565b9050613409602083018661338c565b6134166040830185611e2d565b61342360608301846133d1565b95945050505050565b60008151905061343b81612544565b92915050565b60006020828403121561345757613456611dbe565b5b60006134658482850161342c565b91505092915050565b60008151905061347d81611e89565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156134a8576134a761209e565b5b602082029050919050565b60006134c66134c18461348d565b6120fe565b905080602084028301858111156134e0576134df611eeb565b5b835b8181101561350957806134f58882612c50565b8452602084019350506020810190506134e2565b5050509392505050565b600082601f83011261352857613527611ee1565b5b60026135358482856134b3565b91505092915050565b600060e0828403121561355457613553613483565b5b61355e60a06120fe565b9050600061356e84828501612c50565b600083015250602061358284828501613513565b602083015250606061359684828501613513565b60408301525060a06135aa84828501612c50565b60608301525060c06135be84828501612c92565b60808301525092915050565b60006135dd6135d884612119565b6120fe565b9050828152602081018484840111156135f9576135f8612088565b5b61360484828561270a565b509392505050565b600082601f83011261362157613620611ee1565b5b81516136318482602086016135ca565b91505092915050565b600060c082840312156136505761364f613483565b5b61365a60c06120fe565b9050600082015167ffffffffffffffff81111561367a57613679613488565b5b6136868482850161360c565b600083015250602061369a84828501612c50565b60208301525060406136ae84828501612c50565b60408301525060606136c284828501612c50565b60608301525060806136d684828501612c92565b60808301525060a06136ea84828501612c92565b60a08301525092915050565b600067ffffffffffffffff8211156137115761371061209e565b5b61371a8261208d565b9050602081019050919050565b600061373a613735846136f6565b6120fe565b90508281526020810184848401111561375657613755612088565b5b61376184828561270a565b509392505050565b600082601f83011261377e5761377d611ee1565b5b815161378e848260208601613727565b91505092915050565b60008060008060008060006101a0888a0312156137b7576137b6611dbe565b5b60006137c58a828b01612c50565b97505060206137d68a828b0161346e565b96505060406137e78a828b01612c50565b95505060606137f88a828b0161353e565b94505061014088015167ffffffffffffffff81111561381a57613819611dc3565b5b6138268a828b0161363a565b9350506101606138388a828b01612c92565b92505061018088015167ffffffffffffffff81111561385a57613859611dc3565b5b6138668a828b01613769565b91505092959891949750929550565b600060208201905081810360008301526138908184866132a5565b90509392505050565b600067ffffffffffffffff8211156138b4576138b361209e565b5b602082029050602081019050919050565b6000604082840312156138db576138da613483565b5b6138e560406120fe565b905060006138f584828501612c50565b60008301525060206139098482850161346e565b60208301525092915050565b600061392861392384613899565b6120fe565b9050808382526020820190506040840283018581111561394b5761394a611eeb565b5b835b81811015613974578061396088826138c5565b84526020840193505060408101905061394d565b5050509392505050565b600082601f83011261399357613992611ee1565b5b81516139a3848260208601613915565b91505092915050565b6000602082840312156139c2576139c1611dbe565b5b600082015167ffffffffffffffff8111156139e0576139df611dc3565b5b6139ec8482850161397e565b91505092915050565b6000604082019050613a0a6000830185612212565b613a176020830184612212565b9392505050565b6000819050919050565b6000613a376020840184611ddf565b905092915050565b6000613a4e6020840184611ea0565b905092915050565b60408201613a676000830183613a28565b613a7460008501826125cc565b50613a826020830183613a3f565b613a8f6020850182612945565b50505050565b6000613aa18383613a56565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613ad18385612924565b9350613adc82613a1e565b8060005b85811015613b1557613af28284613aad565b613afc8882613a95565b9750613b0783613ab8565b925050600181019050613ae0565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613b4c602084018461255b565b905092915050565b613b5d8161253a565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613b8f57613b8e613b6d565b5b83810192508235915060208301925067ffffffffffffffff821115613bb757613bb6613b63565b5b600182023603831315613bcd57613bcc613b68565b5b509250929050565b6000613be183856126f9565b9350613bee83858461214a565b613bf78361208d565b840190509392505050565b600060408301613c156000840184613b3d565b613c226000860182613b54565b50613c306020840184613b72565b8583036020870152613c43838284613bd5565b925050508091505092915050565b6000613c5d8383613c02565b905092915050565b600082356001604003833603038112613c8157613c80613b6d565b5b82810191505092915050565b6000602082019050919050565b6000613ca68385613b22565b935083602084028501613cb884613b33565b8060005b87811015613cfc578484038952613cd38284613c65565b613cdd8582613c51565b9450613ce883613c8d565b925060208a01995050600181019050613cbc565b50829750879450505050509392505050565b6000608082019050613d23600083018a612212565b8181036020830152613d3681888a613ac5565b90508181036040830152613d4b8186886132a5565b90508181036060830152613d60818486613c9a565b905098975050505050505050565b600080600060608486031215613d8757613d86611dbe565b5b600084015167ffffffffffffffff811115613da557613da4611dc3565b5b613db18682870161360c565b9350506020613dc28682870161346e565b9250506040613dd386828701612c50565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000613e39602f83612bc8565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b6000613e7a82611d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eac57613eab612def565b5b60018201905091905056fea2646970667358221220c79bd5679bb63264b2192b09b1c634fa20c9e328a470579d081f135e0332cd4164736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106101c25760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f1461065e578063e5b4d82714610687578063f8300fca146106b0578063fcb4888e146106ef576101c2565b8063a233627914610578578063da66863a146105bb578063dc00bbfe146105f8578063dd62ed3e14610621576101c2565b80639dc29fac116100d15780639dc29fac146104b95780639fbe7c73146104e25780639fd0987214610512578063a230c5241461053b576101c2565b8063883802741461042a5780638ce516da14610467578063975762b314610490576101c2565b806340c10f19116101645780635ffc70041161013e5780635ffc700414610370578063642b5bfb1461039957806370a08231146103c457806378e21c6e14610401576101c2565b806340c10f19146102e15780635c253c0b1461030a5780635daf08ca14610333576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc610718565b6040516101e99190611d99565b60405180910390f35b3480156101fe57600080fd5b5061020761071e565b6040516102149190611d99565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611df4565b6107b6565b6040516102519190611e3c565b60405180910390f35b34801561026657600080fd5b5061026f61085d565b60405161027c9190611d99565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190611f46565b6108f4565b005b6102b6610a5a565b005b3480156102c457600080fd5b506102df60048036038101906102da9190611ff5565b610b60565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612048565b610c43565b005b34801561031657600080fd5b50610331600480360381019061032c91906121c9565b610dbc565b005b34801561033f57600080fd5b5061035a60048036038101906103559190611df4565b610df6565b6040516103679190612221565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061223c565b610e29565b005b3480156103a557600080fd5b506103ae610ebd565b6040516103bb9190611d99565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061228f565b610f55565b6040516103f89190611d99565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906122bc565b610ff9565b005b34801561043657600080fd5b50610451600480360381019061044c919061230f565b611039565b60405161045e9190611e3c565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061223c565b611159565b005b34801561049c57600080fd5b506104b760048036038101906104b29190612362565b6112d5565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612048565b611397565b005b6104fc60048036038101906104f79190612441565b611510565b6040516105099190611d99565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612570565b6115d5565b005b34801561054757600080fd5b50610562600480360381019061055d919061228f565b61167f565b60405161056f9190611e3c565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190611df4565b61169f565b6040516105b2979695949392919061284b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906128cc565b611772565b6040516105ef9190612a06565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611df4565b61181f565b005b34801561062d57600080fd5b5061064860048036038101906106439190612a28565b611859565b6040516106559190611d99565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061223c565b611900565b005b34801561069357600080fd5b506106ae60048036038101906106a99190612b14565b611994565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906128cc565b611a35565b6040516106e693929190612c12565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061228f565b611aea565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612c65565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b81526004016108139190611d99565b6020604051808303816000875af1158015610832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108569190612ca7565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef9190612c65565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612d46565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a1f96959493929190612d93565b600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b5c5760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ab59190612e1e565b831015610af757610ac461085d565b610acd83610f55565b34610ad89190612e52565b610ae29190612ec3565b90508084610af09190612ef4565b9350610b06565b8334610b039190612e1e565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b4c573d6000803e3d6000fd5b5050508080600101915050610a62565b5050565b81610b6a33610f55565b1015610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612f9a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c0c9493929190612fba565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cec5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613071565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d86929190613091565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610deb91906130ba565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ffc70048484846040518463ffffffff1660e01b8152600401610e86939291906130dc565b600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f509190612c65565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610fb19190612221565b602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612c65565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161102c93929190613113565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c67338686611085338a611859565b61108f9190612ef4565b6040518463ffffffff1660e01b81526004016110ad939291906130dc565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161111c9392919061314a565b600060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112025750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906131f3565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161129e939291906130dc565b600060405180830381600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b50505050505050565b816112e08433611859565b10156112f3576112f08333611859565b91505b6112fe833384611900565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b815260040161135f9493929190612fba565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690613285565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b81526004016114da929190613091565b600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016115829b9a999897969594939291906132eb565b60206040518083038185885af11580156115a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115c59190612c65565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161163794939291906133e0565b6020604051808303816000875af1158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613441565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006116ac611ce7565b6116b4611d24565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016117139190611d99565b600060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117599190613797565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b81526004016117d1929190613875565b600060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061181791906139ac565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8160405161184e9190611d99565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016118b79291906139f5565b602060405180830381865afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190612c65565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b815260040161195d939291906130dc565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b81526004016119fb9796959493929190613d0e565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611a97929190613875565b600060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611add9190613d6e565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b935750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613e4f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce457806003600060046000815480929190611c3b90613e6f565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611d01611d5e565b8152602001611d0e611d5e565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b611d9381611d80565b82525050565b6000602082019050611dae6000830184611d8a565b92915050565b6000604051905090565b600080fd5b600080fd5b611dd181611d80565b8114611ddc57600080fd5b50565b600081359050611dee81611dc8565b92915050565b600060208284031215611e0a57611e09611dbe565b5b6000611e1884828501611ddf565b91505092915050565b60008115159050919050565b611e3681611e21565b82525050565b6000602082019050611e516000830184611e2d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e8282611e57565b9050919050565b611e9281611e77565b8114611e9d57600080fd5b50565b600081359050611eaf81611e89565b92915050565b611ebe81611e21565b8114611ec957600080fd5b50565b600081359050611edb81611eb5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0657611f05611ee1565b5b8235905067ffffffffffffffff811115611f2357611f22611ee6565b5b602083019150836001820283011115611f3f57611f3e611eeb565b5b9250929050565b600080600080600080600060c0888a031215611f6557611f64611dbe565b5b6000611f738a828b01611ea0565b9750506020611f848a828b01611ecc565b9650506040611f958a828b01611ecc565b9550506060611fa68a828b01611ddf565b9450506080611fb78a828b01611ddf565b93505060a088013567ffffffffffffffff811115611fd857611fd7611dc3565b5b611fe48a828b01611ef0565b925092505092959891949750929550565b60008060006060848603121561200e5761200d611dbe565b5b600061201c86828701611ddf565b935050602061202d86828701611ddf565b925050604061203e86828701611ecc565b9150509250925092565b6000806040838503121561205f5761205e611dbe565b5b600061206d85828601611ea0565b925050602061207e85828601611ddf565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120d68261208d565b810181811067ffffffffffffffff821117156120f5576120f461209e565b5b80604052505050565b6000612108611db4565b905061211482826120cd565b919050565b600067ffffffffffffffff8211156121345761213361209e565b5b61213d8261208d565b9050602081019050919050565b82818337600083830152505050565b600061216c61216784612119565b6120fe565b90508281526020810184848401111561218857612187612088565b5b61219384828561214a565b509392505050565b600082601f8301126121b0576121af611ee1565b5b81356121c0848260208601612159565b91505092915050565b6000602082840312156121df576121de611dbe565b5b600082013567ffffffffffffffff8111156121fd576121fc611dc3565b5b6122098482850161219b565b91505092915050565b61221b81611e77565b82525050565b60006020820190506122366000830184612212565b92915050565b60008060006060848603121561225557612254611dbe565b5b600061226386828701611ea0565b935050602061227486828701611ea0565b925050604061228586828701611ddf565b9150509250925092565b6000602082840312156122a5576122a4611dbe565b5b60006122b384828501611ea0565b91505092915050565b6000806000606084860312156122d5576122d4611dbe565b5b60006122e386828701611ddf565b93505060206122f486828701611ecc565b925050604061230586828701611ecc565b9150509250925092565b60008060006060848603121561232857612327611dbe565b5b600061233686828701611ea0565b935050602061234786828701611ddf565b925050604061235886828701611ddf565b9150509250925092565b6000806000806080858703121561237c5761237b611dbe565b5b600061238a87828801611ddf565b945050602061239b87828801611ea0565b93505060406123ac87828801611ddf565b92505060606123bd87828801611ecc565b91505092959194509250565b60008083601f8401126123df576123de611ee1565b5b8235905067ffffffffffffffff8111156123fc576123fb611ee6565b5b60208301915083600182028301111561241857612417611eeb565b5b9250929050565b60008190508260206002028201111561243b5761243a611eeb565b5b92915050565b6000806000806000806000806000806101408b8d03121561246557612464611dbe565b5b60008b013567ffffffffffffffff81111561248357612482611dc3565b5b61248f8d828e016123c9565b9a509a505060206124a28d828e01611ddf565b98505060406124b38d828e0161241f565b97505060806124c48d828e0161241f565b96505060c06124d58d828e01611ddf565b95505060e06124e68d828e01611ecc565b9450506101006124f88d828e01611ecc565b9350506101208b013567ffffffffffffffff81111561251a57612519611dc3565b5b6125268d828e01611ef0565b92509250509295989b9194979a5092959850565b6000819050919050565b61254d8161253a565b811461255857600080fd5b50565b60008135905061256a81612544565b92915050565b6000806040838503121561258757612586611dbe565b5b600083013567ffffffffffffffff8111156125a5576125a4611dc3565b5b6125b18582860161219b565b92505060206125c28582860161255b565b9150509250929050565b6125d581611d80565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061260783836125cc565b60208301905092915050565b6000602082019050919050565b612629816125db565b61263381846125e6565b925061263e826125f1565b8060005b8381101561266f57815161265687826125fb565b965061266183612613565b925050600181019050612642565b505050505050565b61268081611e21565b82525050565b60e08201600082015161269c60008501826125cc565b5060208201516126af6020850182612620565b5060408201516126c26060850182612620565b5060608201516126d560a08501826125cc565b5060808201516126e860c0850182612677565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272857808201518184015260208101905061270d565b60008484015250505050565b600061273f826126ee565b61274981856126f9565b935061275981856020860161270a565b6127628161208d565b840191505092915050565b600060c083016000830151848203600086015261278a8282612734565b915050602083015161279f60208601826125cc565b5060408301516127b260408601826125cc565b5060608301516127c560608601826125cc565b5060808301516127d86080860182612677565b5060a08301516127eb60a0860182612677565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b600061281d826127f6565b6128278185612801565b935061283781856020860161270a565b6128408161208d565b840191505092915050565b60006101a082019050612861600083018a611d8a565b61286e6020830189612212565b61287b6040830188611d8a565b6128886060830187612686565b81810361014083015261289b818661276d565b90506128ab610160830185611e2d565b8181036101808301526128be8184612812565b905098975050505050505050565b600080602083850312156128e3576128e2611dbe565b5b600083013567ffffffffffffffff81111561290157612900611dc3565b5b61290d858286016123c9565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61294e81611e77565b82525050565b60408201600082015161296a60008501826125cc565b50602082015161297d6020850182612945565b50505050565b600061298f8383612954565b60408301905092915050565b6000602082019050919050565b60006129b382612919565b6129bd8185612924565b93506129c883612935565b8060005b838110156129f95781516129e08882612983565b97506129eb8361299b565b9250506001810190506129cc565b5085935050505092915050565b60006020820190508181036000830152612a2081846129a8565b905092915050565b60008060408385031215612a3f57612a3e611dbe565b5b6000612a4d85828601611ea0565b9250506020612a5e85828601611ea0565b9150509250929050565b60008083601f840112612a7e57612a7d611ee1565b5b8235905067ffffffffffffffff811115612a9b57612a9a611ee6565b5b602083019150836040820283011115612ab757612ab6611eeb565b5b9250929050565b60008083601f840112612ad457612ad3611ee1565b5b8235905067ffffffffffffffff811115612af157612af0611ee6565b5b602083019150836020820283011115612b0d57612b0c611eeb565b5b9250929050565b60008060008060008060608789031215612b3157612b30611dbe565b5b600087013567ffffffffffffffff811115612b4f57612b4e611dc3565b5b612b5b89828a01612a68565b9650965050602087013567ffffffffffffffff811115612b7e57612b7d611dc3565b5b612b8a89828a016123c9565b9450945050604087013567ffffffffffffffff811115612bad57612bac611dc3565b5b612bb989828a01612abe565b92509250509295509295509295565b600082825260208201905092915050565b6000612be4826126ee565b612bee8185612bc8565b9350612bfe81856020860161270a565b612c078161208d565b840191505092915050565b60006060820190508181036000830152612c2c8186612bd9565b9050612c3b6020830185612212565b612c486040830184611d8a565b949350505050565b600081519050612c5f81611dc8565b92915050565b600060208284031215612c7b57612c7a611dbe565b5b6000612c8984828501612c50565b91505092915050565b600081519050612ca181611eb5565b92915050565b600060208284031215612cbd57612cbc611dbe565b5b6000612ccb84828501612c92565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612d30602b83612bc8565b9150612d3b82612cd4565b604082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b6000612d728385612801565b9350612d7f83858461214a565b612d888361208d565b840190509392505050565b600060a082019050612da86000830189611e2d565b612db56020830188611e2d565b612dc26040830187611d8a565b612dcf6060830186611d8a565b8181036080830152612de2818486612d66565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2982611d80565b9150612e3483611d80565b9250828203905081811115612e4c57612e4b612def565b5b92915050565b6000612e5d82611d80565b9150612e6883611d80565b9250828202612e7681611d80565b91508282048414831517612e8d57612e8c612def565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ece82611d80565b9150612ed983611d80565b925082612ee957612ee8612e94565b5b828204905092915050565b6000612eff82611d80565b9150612f0a83611d80565b9250828201905080821115612f2257612f21612def565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b6000612f84602783612bc8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b6000608082019050612fcf6000830187611d8a565b612fdc6020830186612212565b612fe96040830185611d8a565b612ff66060830184611e2d565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061305b602583612bc8565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b60006040820190506130a66000830185612212565b6130b36020830184611d8a565b9392505050565b600060208201905081810360008301526130d48184612bd9565b905092915050565b60006060820190506130f16000830186612212565b6130fe6020830185612212565b61310b6040830184611d8a565b949350505050565b60006060820190506131286000830186611d8a565b6131356020830185611e2d565b6131426040830184611e2d565b949350505050565b600060608201905061315f6000830186612212565b61316c6020830185611d8a565b6131796040830184611d8a565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b60006131dd602783612bc8565b91506131e882613181565b604082019050919050565b6000602082019050818103600083015261320c816131d0565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061326f602583612bc8565b915061327a82613213565b604082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b60006132b18385612bc8565b93506132be83858461214a565b6132c78361208d565b840190509392505050565b82818337505050565b6132e7604083836132d2565b5050565b600061016082019050613301600083018e612212565b8181036020830152613314818c8e6132a5565b9050613323604083018b611d8a565b613330606083018a6132db565b61333d60a08301896132db565b61334a60e0830188611d8a565b613358610100830187611e2d565b613366610120830186611e2d565b81810361014083015261337a818486612d66565b90509c9b505050505050505050505050565b6133958161253a565b82525050565b6000819050919050565b6000819050919050565b60006133ca6133c56133c08461339b565b6133a5565b611d80565b9050919050565b6133da816133af565b82525050565b600060808201905081810360008301526133fa8187612bd9565b9050613409602083018661338c565b6134166040830185611e2d565b61342360608301846133d1565b95945050505050565b60008151905061343b81612544565b92915050565b60006020828403121561345757613456611dbe565b5b60006134658482850161342c565b91505092915050565b60008151905061347d81611e89565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156134a8576134a761209e565b5b602082029050919050565b60006134c66134c18461348d565b6120fe565b905080602084028301858111156134e0576134df611eeb565b5b835b8181101561350957806134f58882612c50565b8452602084019350506020810190506134e2565b5050509392505050565b600082601f83011261352857613527611ee1565b5b60026135358482856134b3565b91505092915050565b600060e0828403121561355457613553613483565b5b61355e60a06120fe565b9050600061356e84828501612c50565b600083015250602061358284828501613513565b602083015250606061359684828501613513565b60408301525060a06135aa84828501612c50565b60608301525060c06135be84828501612c92565b60808301525092915050565b60006135dd6135d884612119565b6120fe565b9050828152602081018484840111156135f9576135f8612088565b5b61360484828561270a565b509392505050565b600082601f83011261362157613620611ee1565b5b81516136318482602086016135ca565b91505092915050565b600060c082840312156136505761364f613483565b5b61365a60c06120fe565b9050600082015167ffffffffffffffff81111561367a57613679613488565b5b6136868482850161360c565b600083015250602061369a84828501612c50565b60208301525060406136ae84828501612c50565b60408301525060606136c284828501612c50565b60608301525060806136d684828501612c92565b60808301525060a06136ea84828501612c92565b60a08301525092915050565b600067ffffffffffffffff8211156137115761371061209e565b5b61371a8261208d565b9050602081019050919050565b600061373a613735846136f6565b6120fe565b90508281526020810184848401111561375657613755612088565b5b61376184828561270a565b509392505050565b600082601f83011261377e5761377d611ee1565b5b815161378e848260208601613727565b91505092915050565b60008060008060008060006101a0888a0312156137b7576137b6611dbe565b5b60006137c58a828b01612c50565b97505060206137d68a828b0161346e565b96505060406137e78a828b01612c50565b95505060606137f88a828b0161353e565b94505061014088015167ffffffffffffffff81111561381a57613819611dc3565b5b6138268a828b0161363a565b9350506101606138388a828b01612c92565b92505061018088015167ffffffffffffffff81111561385a57613859611dc3565b5b6138668a828b01613769565b91505092959891949750929550565b600060208201905081810360008301526138908184866132a5565b90509392505050565b600067ffffffffffffffff8211156138b4576138b361209e565b5b602082029050602081019050919050565b6000604082840312156138db576138da613483565b5b6138e560406120fe565b905060006138f584828501612c50565b60008301525060206139098482850161346e565b60208301525092915050565b600061392861392384613899565b6120fe565b9050808382526020820190506040840283018581111561394b5761394a611eeb565b5b835b81811015613974578061396088826138c5565b84526020840193505060408101905061394d565b5050509392505050565b600082601f83011261399357613992611ee1565b5b81516139a3848260208601613915565b91505092915050565b6000602082840312156139c2576139c1611dbe565b5b600082015167ffffffffffffffff8111156139e0576139df611dc3565b5b6139ec8482850161397e565b91505092915050565b6000604082019050613a0a6000830185612212565b613a176020830184612212565b9392505050565b6000819050919050565b6000613a376020840184611ddf565b905092915050565b6000613a4e6020840184611ea0565b905092915050565b60408201613a676000830183613a28565b613a7460008501826125cc565b50613a826020830183613a3f565b613a8f6020850182612945565b50505050565b6000613aa18383613a56565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613ad18385612924565b9350613adc82613a1e565b8060005b85811015613b1557613af28284613aad565b613afc8882613a95565b9750613b0783613ab8565b925050600181019050613ae0565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613b4c602084018461255b565b905092915050565b613b5d8161253a565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613b8f57613b8e613b6d565b5b83810192508235915060208301925067ffffffffffffffff821115613bb757613bb6613b63565b5b600182023603831315613bcd57613bcc613b68565b5b509250929050565b6000613be183856126f9565b9350613bee83858461214a565b613bf78361208d565b840190509392505050565b600060408301613c156000840184613b3d565b613c226000860182613b54565b50613c306020840184613b72565b8583036020870152613c43838284613bd5565b925050508091505092915050565b6000613c5d8383613c02565b905092915050565b600082356001604003833603038112613c8157613c80613b6d565b5b82810191505092915050565b6000602082019050919050565b6000613ca68385613b22565b935083602084028501613cb884613b33565b8060005b87811015613cfc578484038952613cd38284613c65565b613cdd8582613c51565b9450613ce883613c8d565b925060208a01995050600181019050613cbc565b50829750879450505050509392505050565b6000608082019050613d23600083018a612212565b8181036020830152613d3681888a613ac5565b90508181036040830152613d4b8186886132a5565b90508181036060830152613d60818486613c9a565b905098975050505050505050565b600080600060608486031215613d8757613d86611dbe565b5b600084015167ffffffffffffffff811115613da557613da4611dc3565b5b613db18682870161360c565b9350506020613dc28682870161346e565b9250506040613dd386828701612c50565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000613e39602f83612bc8565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b6000613e7a82611d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eac57613eab612def565b5b60018201905091905056fea2646970667358221220c79bd5679bb63264b2192b09b1c634fa20c9e328a470579d081f135e0332cd4164736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Forum.json b/backend/contractArtifacts/Forum.json new file mode 100644 index 0000000..308eff0 --- /dev/null +++ b/backend/contractArtifacts/Forum.json @@ -0,0 +1,215 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Forum", + "sourceName": "contracts/core/Forum.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "id", + "type": "string" + } + ], + "name": "PostAdded", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "weightPPM", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authorAddress", + "type": "address" + } + ], + "internalType": "struct Author[]", + "name": "authors", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "components": [ + { + "internalType": "int256", + "name": "weightPPM", + "type": "int256" + }, + { + "internalType": "string", + "name": "targetPostId", + "type": "string" + } + ], + "internalType": "struct Citation[]", + "name": "citations", + "type": "tuple[]" + } + ], + "name": "addPost", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + } + ], + "name": "getPostAuthors", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "weightPPM", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authorAddress", + "type": "address" + } + ], + "internalType": "struct Author[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "postCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "postIds", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "posts", + "outputs": [ + { + "internalType": "string", + "name": "id", + "type": "string" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "reputation", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "int256", + "name": "amount", + "type": "int256" + }, + { + "internalType": "bool", + "name": "initialNegative", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "depth", + "type": "uint256" + } + ], + "name": "propagateReputation", + "outputs": [ + { + "internalType": "int256", + "name": "refundToInbound", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600360055534801561001557600080fd5b5061390b806100256000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638b96129b1161005b5780638b96129b14610100578063da66863a1461011c578063f8300fca1461014c578063fe0d695a1461017e5761007d565b806317906c2e1461008257806317e19f24146100a057806350cde8ef146100d0575b600080fd5b61008a61019a565b6040516100979190611ff4565b60405180910390f35b6100ba60048036038101906100b59190612203565b6101a0565b6040516100c79190612295565b60405180910390f35b6100ea60048036038101906100e591906122b0565b610e0d565b6040516100f7919061235c565b60405180910390f35b61011a600480360381019061011591906124e8565b610eb9565b005b610136600480360381019061013191906125b1565b611472565b60405161014391906126fa565b60405180910390f35b6101666004803603810190610161919061271c565b61155a565b60405161017593929190612774565b60405180910390f35b610198600480360381019061019391906127f0565b611642565b005b60025481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061022957503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9061288f565b60405180910390fd5b600554821061027957839050610e05565b6000808660405161028a91906128eb565b9081526020016040518091039020905060008160020180549050036102b25784915050610e05565b60005b81600301805490508110156103e65760008260030182815481106102dc576102db612902565b5b90600052602060002090600202016000015412156103d9576103cb8783600301838154811061030e5761030d612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461034190612960565b80601f016020809104026020016040519081016040528092919081815260200182805461036d90612960565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505081525050888888611717565b866103d691906129c0565b95505b80806001019150506102b5565b5060005b816003018054905081101561051b57600082600301828154811061041157610410612902565b5b906000526020600020906002020160000154131561050e576105008783600301838154811061044357610442612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461047690612960565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612960565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b505050505081525050888888611717565b8661050b91906129c0565b95505b80806001019150506103ea565b506000851315610807576107e6816040518060a001604052908160008201805461054490612960565b80601f016020809104026020016040519081016040528092919081815260200182805461057090612960565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156106d35783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610641565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107ce57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461073d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461076990612960565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152505081526020019060010190610700565b50505050815260200160048201548152505086611989565b50848160040160008282546107fb9190612a03565b92505081905550610e03565b60008582600401546108199190612a37565b12610b0a57610adf816040518060a001604052908160008201805461083d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461086990612960565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156109cc5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061093a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ac7578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610a3690612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6290612960565b8015610aaf5780601f10610a8457610100808354040283529160200191610aaf565b820191906000526020600020905b815481529060010190602001808311610a9257829003601f168201915b505050505081525050815260200190600101906109f9565b50505050815260200160048201548152505086611989565b915084610aeb90612a7b565b816004016000828254610afe9190612ac3565b92505081905550610e02565b848160040154610b1a9190612a37565b9150610dea816040518060a0016040529081600082018054610b3b90612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6790612960565b8015610bb45780601f10610b8957610100808354040283529160200191610bb4565b820191906000526020600020905b815481529060010190602001808311610b9757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610cca5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610c38565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610dc5578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610d3490612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6090612960565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b50505050508152505081526020019060010190610cf7565b5050505081526020016004820154815250508260040154610de590612a7b565b611989565b82610df59190612a37565b9150600081600401819055505b5b505b949350505050565b60018181548110610e1d57600080fd5b906000526020600020016000915090508054610e3890612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490612960565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090612b69565b60405180910390fd5b60008686905011610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690612bfb565b60405180910390fd5b60026000815480929190610fa290612c1b565b91905055506001848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182610fe4929190612e1a565b506000808585604051610ff8929190612f0f565b908152602001604051809103902090506000816002018054905014611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612f9a565b60405180910390fd5b878160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848260000191826110a8929190612e1a565b50600080600090505b88889050811015611147578888828181106110cf576110ce612902565b5b90506040020160000135826110e49190612a03565b9150826002018989838181106110fd576110fc612902565b5b905060400201908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111389190613147565b505080806001019150506110b1565b50620f4240811461118d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611184906131c7565b60405180910390fd5b60005b8484905081101561120857826003018585838181106111b2576111b1612902565b5b90506020028101906111c491906131f6565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111f9919061333c565b50508080600101915050611190565b5060008060005b846003018054905081101561132c57600085600301828154811061123657611235612902565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906133bc565b60405180910390fd5b620f42408113156112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea9061344e565b60405180910390fd5b600081131561130f5780846113089190612a37565b935061131e565b808361131b9190612a37565b92505b50808060010191505061120f565b50620f4240821315611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906134e0565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613572565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c253c0b89896040518363ffffffff1660e01b81526004016114339291906135bf565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b505050505050505050505050505050565b60606000808484604051611487929190612f0f565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b8282101561154d5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906114bb565b5050505091505092915050565b60008180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461159390612960565b80601f01602080910402602001604051908101604052809291908181526020018280546115bf90612960565b801561160c5780601f106115e15761010080835404028352916020019161160c565b820191906000526020600020905b8154815290600101906020018083116115ef57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613655565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424085600001518561172d9190613675565b611737919061371c565b905060008560200151510361184057600081121561178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611781906137f8565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611809929190613818565b600060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b50505050611980565b600060038760405161185291906128eb565b9081526020016040518091039020866020015160405161187291906128eb565b908152602001604051809103902054905083156118df5760008212156118ba578061189c90612a7b565b82136118b157806118ac90612a7b565b6118b3565b815b91506118de565b806118c490612a7b565b82126118d957806118d490612a7b565b6118db565b815b91505b5b600061191887602001518487806119065750600087148015611905575060008a60000151125b5b6001886119139190612a03565b6101a0565b9050808361192691906129c0565b92508260038960405161193991906128eb565b9081526020016040518091039020886020015160405161195991906128eb565b908152602001604051809103902060008282546119769190612a37565b9250508190555050505b95945050505050565b60008060005b846040015151811015611a5857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e866040015183815181106119f1576119f0612902565b5b6020026020010151602001516040518263ffffffff1660e01b8152600401611a199190613841565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050808060010191505061198f565b5060005b846040015151811015611fd357600085604001518281518110611a8257611a81612902565b5b6020026020010151905060006001876040015151611aa09190612ac3565b831015611ada57620f4240826000015187611abb9190613675565b611ac5919061371c565b90508084611ad39190612a37565b9350611ae9565b8386611ae691906129c0565b90505b6000811315611c3f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460200151846040518463ffffffff1660e01b8152600401611b779392919061385c565b600060405180830381600087803b158015611b9157600080fd5b505af1158015611ba5573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e83602001516040518263ffffffff1660e01b8152600401611c089190613841565b600060405180830381600087803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050611fc4565b80611c4990612a7b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823184602001516040518263ffffffff1660e01b8152600401611ca89190613841565b602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906138a8565b1015611f0257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823183602001516040518263ffffffff1660e01b8152600401611d4e9190613841565b602060405180830381865afa158015611d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8f91906138a8565b81611d9a9190612a37565b85611da59190612a37565b9450600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823187602001516040518263ffffffff1660e01b8152600401611e6c9190613841565b602060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ead91906138a8565b6040518463ffffffff1660e01b8152600401611ecb9392919061385c565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b50505050611fc3565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7290612a7b565b6040518463ffffffff1660e01b8152600401611f909392919061385c565b600060405180830381600087803b158015611faa57600080fd5b505af1158015611fbe573d6000803e3d6000fd5b505050505b5b50508080600101915050611a5c565b505092915050565b6000819050919050565b611fee81611fdb565b82525050565b60006020820190506120096000830184611fe5565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120768261202d565b810181811067ffffffffffffffff821117156120955761209461203e565b5b80604052505050565b60006120a861200f565b90506120b4828261206d565b919050565b600067ffffffffffffffff8211156120d4576120d361203e565b5b6120dd8261202d565b9050602081019050919050565b82818337600083830152505050565b600061210c612107846120b9565b61209e565b90508281526020810184848401111561212857612127612028565b5b6121338482856120ea565b509392505050565b600082601f8301126121505761214f612023565b5b81356121608482602086016120f9565b91505092915050565b6000819050919050565b61217c81612169565b811461218757600080fd5b50565b60008135905061219981612173565b92915050565b60008115159050919050565b6121b48161219f565b81146121bf57600080fd5b50565b6000813590506121d1816121ab565b92915050565b6121e081611fdb565b81146121eb57600080fd5b50565b6000813590506121fd816121d7565b92915050565b6000806000806080858703121561221d5761221c612019565b5b600085013567ffffffffffffffff81111561223b5761223a61201e565b5b6122478782880161213b565b94505060206122588782880161218a565b9350506040612269878288016121c2565b925050606061227a878288016121ee565b91505092959194509250565b61228f81612169565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000602082840312156122c6576122c5612019565b5b60006122d4848285016121ee565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123175780820151818401526020810190506122fc565b60008484015250505050565b600061232e826122dd565b61233881856122e8565b93506123488185602086016122f9565b6123518161202d565b840191505092915050565b600060208201905081810360008301526123768184612323565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a98261237e565b9050919050565b6123b98161239e565b81146123c457600080fd5b50565b6000813590506123d6816123b0565b92915050565b600080fd5b600080fd5b60008083601f8401126123fc576123fb612023565b5b8235905067ffffffffffffffff811115612419576124186123dc565b5b602083019150836040820283011115612435576124346123e1565b5b9250929050565b60008083601f84011261245257612451612023565b5b8235905067ffffffffffffffff81111561246f5761246e6123dc565b5b60208301915083600182028301111561248b5761248a6123e1565b5b9250929050565b60008083601f8401126124a8576124a7612023565b5b8235905067ffffffffffffffff8111156124c5576124c46123dc565b5b6020830191508360208202830111156124e1576124e06123e1565b5b9250929050565b60008060008060008060006080888a03121561250757612506612019565b5b60006125158a828b016123c7565b975050602088013567ffffffffffffffff8111156125365761253561201e565b5b6125428a828b016123e6565b9650965050604088013567ffffffffffffffff8111156125655761256461201e565b5b6125718a828b0161243c565b9450945050606088013567ffffffffffffffff8111156125945761259361201e565b5b6125a08a828b01612492565b925092505092959891949750929550565b600080602083850312156125c8576125c7612019565b5b600083013567ffffffffffffffff8111156125e6576125e561201e565b5b6125f28582860161243c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61263381611fdb565b82525050565b6126428161239e565b82525050565b60408201600082015161265e600085018261262a565b5060208201516126716020850182612639565b50505050565b60006126838383612648565b60408301905092915050565b6000602082019050919050565b60006126a7826125fe565b6126b18185612609565b93506126bc8361261a565b8060005b838110156126ed5781516126d48882612677565b97506126df8361268f565b9250506001810190506126c0565b5085935050505092915050565b60006020820190508181036000830152612714818461269c565b905092915050565b60006020828403121561273257612731612019565b5b600082013567ffffffffffffffff8111156127505761274f61201e565b5b61275c8482850161213b565b91505092915050565b61276e8161239e565b82525050565b6000606082019050818103600083015261278e8186612323565b905061279d6020830185612765565b6127aa6040830184611fe5565b949350505050565b60006127bd8261239e565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b60006020828403121561280657612805612019565b5b6000612814848285016127db565b91505092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c2070726f706160008201527f6761746552657075746174696f6e000000000000000000000000000000000000602082015250565b6000612879602e836122e8565b91506128848261281d565b604082019050919050565b600060208201905081810360008301526128a88161286c565b9050919050565b600081905092915050565b60006128c5826122dd565b6128cf81856128af565b93506128df8185602086016122f9565b80840191505092915050565b60006128f782846128ba565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297857607f821691505b60208210810361298b5761298a612931565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129cb82612169565b91506129d683612169565b92508282039050818112600084121682821360008512151617156129fd576129fc612991565b5b92915050565b6000612a0e82611fdb565b9150612a1983611fdb565b9250828201905080821115612a3157612a30612991565b5b92915050565b6000612a4282612169565b9150612a4d83612169565b925082820190508281121560008312168382126000841215161715612a7557612a74612991565b5b92915050565b6000612a8682612169565b91507f80000000000000000000000000000000000000000000000000000000000000008203612ab857612ab7612991565b5b816000039050919050565b6000612ace82611fdb565b9150612ad983611fdb565b9250828203905081811115612af157612af0612991565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20616464506f60008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b536022836122e8565b9150612b5e82612af7565b604082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000612be56025836122e8565b9150612bf082612b89565b604082019050919050565b60006020820190508181036000830152612c1481612bd8565b9050919050565b6000612c2682611fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5857612c57612991565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c93565b612cda8683612c93565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d17612d12612d0d84611fdb565b612cf2565b611fdb565b9050919050565b6000819050919050565b612d3183612cfc565b612d45612d3d82612d1e565b848454612ca0565b825550505050565b600090565b612d5a612d4d565b612d65818484612d28565b505050565b5b81811015612d8957612d7e600082612d52565b600181019050612d6b565b5050565b601f821115612dce57612d9f81612c6e565b612da884612c83565b81016020851015612db7578190505b612dcb612dc385612c83565b830182612d6a565b50505b505050565b600082821c905092915050565b6000612df160001984600802612dd3565b1980831691505092915050565b6000612e0a8383612de0565b9150826002028217905092915050565b612e248383612c63565b67ffffffffffffffff811115612e3d57612e3c61203e565b5b612e478254612960565b612e52828285612d8d565b6000601f831160018114612e815760008415612e6f578287013590505b612e798582612dfe565b865550612ee1565b601f198416612e8f86612c6e565b60005b82811015612eb757848901358255600182019150602085019450602081019050612e92565b86831015612ed45784890135612ed0601f891682612de0565b8355505b6001600288020188555050505b50505050505050565b6000612ef683856128af565b9350612f038385846120ea565b82840190509392505050565b6000612f1c828486612eea565b91508190509392505050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000612f846026836122e8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b60008135612fc7816121d7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61300984612fd0565b9350801983169250808416831791505092915050565b61302882612cfc565b61303b61303482612d1e565b8354612fdd565b8255505050565b6000813561304f816123b0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61307884612fd0565b9350801983169250808416831791505092915050565b60006130a96130a461309f8461237e565b612cf2565b61237e565b9050919050565b60006130bb8261308e565b9050919050565b60006130cd826130b0565b9050919050565b6000819050919050565b6130e7826130c2565b6130fa6130f3826130d4565b8354613058565b8255505050565b60008101600083018061311381612fba565b905061311f818461301f565b50505060018101602083018061313481613042565b905061314081846130de565b5050505050565b6131518282613101565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16022836122e8565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112613212576132116131e7565b5b80830191505092915050565b6000813561322b81612173565b80915050919050565b600061324f61324a61324584612169565b612cf2565b612169565b9050919050565b6000819050919050565b61326982613234565b61327c61327582613256565b8354612fdd565b8255505050565b600080833560016020038436030381126132a05761329f6131e7565b5b80840192508235915067ffffffffffffffff8211156132c2576132c16131ec565b5b6020830192506001820236038313156132de576132dd6131f1565b5b509250929050565b6132f1838383612e1a565b505050565b6000810160008301806133088161321e565b90506133148184613260565b50505060018101602083016133298185613283565b6133348183866132e6565b505050505050565b61334682826132f6565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006133a66028836122e8565b91506133b18261334a565b604082019050919050565b600060208201905081810360008301526133d581613399565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b60006134386027836122e8565b9150613443826133dc565b604082019050919050565b600060208201905081810360008301526134678161342b565b9050919050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b60006134ca602c836122e8565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b600061355c602d836122e8565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b600061359e83856122e8565b93506135ab8385846120ea565b6135b48361202d565b840190509392505050565b600060208201905081810360008301526135da818486613592565b90509392505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061363f6021836122e8565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b600061368082612169565b915061368b83612169565b925082820261369981612169565b91507f800000000000000000000000000000000000000000000000000000000000000084146000841216156136d1576136d0612991565b5b82820584148315176136e6576136e5612991565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372782612169565b915061373283612169565b925082613742576137416136ed565b5b600160000383147f80000000000000000000000000000000000000000000000000000000000000008314161561377b5761377a612991565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b60006137e26026836122e8565b91506137ed82613786565b604082019050919050565b60006020820190508181036000830152613811816137d5565b9050919050565b600060408201905061382d6000830185612765565b61383a6020830184611fe5565b9392505050565b60006020820190506138566000830184612765565b92915050565b60006060820190506138716000830186612765565b61387e6020830185612765565b61388b6040830184611fe5565b949350505050565b6000815190506138a2816121d7565b92915050565b6000602082840312156138be576138bd612019565b5b60006138cc84828501613893565b9150509291505056fea2646970667358221220c34fe26aec1b950c6bf2505bc08a787b81b3216e6c1ccab717b13c38b029c52964736f6c63430008180033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638b96129b1161005b5780638b96129b14610100578063da66863a1461011c578063f8300fca1461014c578063fe0d695a1461017e5761007d565b806317906c2e1461008257806317e19f24146100a057806350cde8ef146100d0575b600080fd5b61008a61019a565b6040516100979190611ff4565b60405180910390f35b6100ba60048036038101906100b59190612203565b6101a0565b6040516100c79190612295565b60405180910390f35b6100ea60048036038101906100e591906122b0565b610e0d565b6040516100f7919061235c565b60405180910390f35b61011a600480360381019061011591906124e8565b610eb9565b005b610136600480360381019061013191906125b1565b611472565b60405161014391906126fa565b60405180910390f35b6101666004803603810190610161919061271c565b61155a565b60405161017593929190612774565b60405180910390f35b610198600480360381019061019391906127f0565b611642565b005b60025481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061022957503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9061288f565b60405180910390fd5b600554821061027957839050610e05565b6000808660405161028a91906128eb565b9081526020016040518091039020905060008160020180549050036102b25784915050610e05565b60005b81600301805490508110156103e65760008260030182815481106102dc576102db612902565b5b90600052602060002090600202016000015412156103d9576103cb8783600301838154811061030e5761030d612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461034190612960565b80601f016020809104026020016040519081016040528092919081815260200182805461036d90612960565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505081525050888888611717565b866103d691906129c0565b95505b80806001019150506102b5565b5060005b816003018054905081101561051b57600082600301828154811061041157610410612902565b5b906000526020600020906002020160000154131561050e576105008783600301838154811061044357610442612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461047690612960565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612960565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b505050505081525050888888611717565b8661050b91906129c0565b95505b80806001019150506103ea565b506000851315610807576107e6816040518060a001604052908160008201805461054490612960565b80601f016020809104026020016040519081016040528092919081815260200182805461057090612960565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156106d35783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610641565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107ce57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461073d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461076990612960565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152505081526020019060010190610700565b50505050815260200160048201548152505086611989565b50848160040160008282546107fb9190612a03565b92505081905550610e03565b60008582600401546108199190612a37565b12610b0a57610adf816040518060a001604052908160008201805461083d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461086990612960565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156109cc5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061093a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ac7578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610a3690612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6290612960565b8015610aaf5780601f10610a8457610100808354040283529160200191610aaf565b820191906000526020600020905b815481529060010190602001808311610a9257829003601f168201915b505050505081525050815260200190600101906109f9565b50505050815260200160048201548152505086611989565b915084610aeb90612a7b565b816004016000828254610afe9190612ac3565b92505081905550610e02565b848160040154610b1a9190612a37565b9150610dea816040518060a0016040529081600082018054610b3b90612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6790612960565b8015610bb45780601f10610b8957610100808354040283529160200191610bb4565b820191906000526020600020905b815481529060010190602001808311610b9757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610cca5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610c38565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610dc5578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610d3490612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6090612960565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b50505050508152505081526020019060010190610cf7565b5050505081526020016004820154815250508260040154610de590612a7b565b611989565b82610df59190612a37565b9150600081600401819055505b5b505b949350505050565b60018181548110610e1d57600080fd5b906000526020600020016000915090508054610e3890612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490612960565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090612b69565b60405180910390fd5b60008686905011610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690612bfb565b60405180910390fd5b60026000815480929190610fa290612c1b565b91905055506001848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182610fe4929190612e1a565b506000808585604051610ff8929190612f0f565b908152602001604051809103902090506000816002018054905014611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612f9a565b60405180910390fd5b878160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848260000191826110a8929190612e1a565b50600080600090505b88889050811015611147578888828181106110cf576110ce612902565b5b90506040020160000135826110e49190612a03565b9150826002018989838181106110fd576110fc612902565b5b905060400201908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111389190613147565b505080806001019150506110b1565b50620f4240811461118d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611184906131c7565b60405180910390fd5b60005b8484905081101561120857826003018585838181106111b2576111b1612902565b5b90506020028101906111c491906131f6565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111f9919061333c565b50508080600101915050611190565b5060008060005b846003018054905081101561132c57600085600301828154811061123657611235612902565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906133bc565b60405180910390fd5b620f42408113156112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea9061344e565b60405180910390fd5b600081131561130f5780846113089190612a37565b935061131e565b808361131b9190612a37565b92505b50808060010191505061120f565b50620f4240821315611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906134e0565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613572565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c253c0b89896040518363ffffffff1660e01b81526004016114339291906135bf565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b505050505050505050505050505050565b60606000808484604051611487929190612f0f565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b8282101561154d5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906114bb565b5050505091505092915050565b60008180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461159390612960565b80601f01602080910402602001604051908101604052809291908181526020018280546115bf90612960565b801561160c5780601f106115e15761010080835404028352916020019161160c565b820191906000526020600020905b8154815290600101906020018083116115ef57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613655565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424085600001518561172d9190613675565b611737919061371c565b905060008560200151510361184057600081121561178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611781906137f8565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611809929190613818565b600060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b50505050611980565b600060038760405161185291906128eb565b9081526020016040518091039020866020015160405161187291906128eb565b908152602001604051809103902054905083156118df5760008212156118ba578061189c90612a7b565b82136118b157806118ac90612a7b565b6118b3565b815b91506118de565b806118c490612a7b565b82126118d957806118d490612a7b565b6118db565b815b91505b5b600061191887602001518487806119065750600087148015611905575060008a60000151125b5b6001886119139190612a03565b6101a0565b9050808361192691906129c0565b92508260038960405161193991906128eb565b9081526020016040518091039020886020015160405161195991906128eb565b908152602001604051809103902060008282546119769190612a37565b9250508190555050505b95945050505050565b60008060005b846040015151811015611a5857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e866040015183815181106119f1576119f0612902565b5b6020026020010151602001516040518263ffffffff1660e01b8152600401611a199190613841565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050808060010191505061198f565b5060005b846040015151811015611fd357600085604001518281518110611a8257611a81612902565b5b6020026020010151905060006001876040015151611aa09190612ac3565b831015611ada57620f4240826000015187611abb9190613675565b611ac5919061371c565b90508084611ad39190612a37565b9350611ae9565b8386611ae691906129c0565b90505b6000811315611c3f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460200151846040518463ffffffff1660e01b8152600401611b779392919061385c565b600060405180830381600087803b158015611b9157600080fd5b505af1158015611ba5573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e83602001516040518263ffffffff1660e01b8152600401611c089190613841565b600060405180830381600087803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050611fc4565b80611c4990612a7b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823184602001516040518263ffffffff1660e01b8152600401611ca89190613841565b602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906138a8565b1015611f0257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823183602001516040518263ffffffff1660e01b8152600401611d4e9190613841565b602060405180830381865afa158015611d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8f91906138a8565b81611d9a9190612a37565b85611da59190612a37565b9450600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823187602001516040518263ffffffff1660e01b8152600401611e6c9190613841565b602060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ead91906138a8565b6040518463ffffffff1660e01b8152600401611ecb9392919061385c565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b50505050611fc3565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7290612a7b565b6040518463ffffffff1660e01b8152600401611f909392919061385c565b600060405180830381600087803b158015611faa57600080fd5b505af1158015611fbe573d6000803e3d6000fd5b505050505b5b50508080600101915050611a5c565b505092915050565b6000819050919050565b611fee81611fdb565b82525050565b60006020820190506120096000830184611fe5565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120768261202d565b810181811067ffffffffffffffff821117156120955761209461203e565b5b80604052505050565b60006120a861200f565b90506120b4828261206d565b919050565b600067ffffffffffffffff8211156120d4576120d361203e565b5b6120dd8261202d565b9050602081019050919050565b82818337600083830152505050565b600061210c612107846120b9565b61209e565b90508281526020810184848401111561212857612127612028565b5b6121338482856120ea565b509392505050565b600082601f8301126121505761214f612023565b5b81356121608482602086016120f9565b91505092915050565b6000819050919050565b61217c81612169565b811461218757600080fd5b50565b60008135905061219981612173565b92915050565b60008115159050919050565b6121b48161219f565b81146121bf57600080fd5b50565b6000813590506121d1816121ab565b92915050565b6121e081611fdb565b81146121eb57600080fd5b50565b6000813590506121fd816121d7565b92915050565b6000806000806080858703121561221d5761221c612019565b5b600085013567ffffffffffffffff81111561223b5761223a61201e565b5b6122478782880161213b565b94505060206122588782880161218a565b9350506040612269878288016121c2565b925050606061227a878288016121ee565b91505092959194509250565b61228f81612169565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000602082840312156122c6576122c5612019565b5b60006122d4848285016121ee565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123175780820151818401526020810190506122fc565b60008484015250505050565b600061232e826122dd565b61233881856122e8565b93506123488185602086016122f9565b6123518161202d565b840191505092915050565b600060208201905081810360008301526123768184612323565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a98261237e565b9050919050565b6123b98161239e565b81146123c457600080fd5b50565b6000813590506123d6816123b0565b92915050565b600080fd5b600080fd5b60008083601f8401126123fc576123fb612023565b5b8235905067ffffffffffffffff811115612419576124186123dc565b5b602083019150836040820283011115612435576124346123e1565b5b9250929050565b60008083601f84011261245257612451612023565b5b8235905067ffffffffffffffff81111561246f5761246e6123dc565b5b60208301915083600182028301111561248b5761248a6123e1565b5b9250929050565b60008083601f8401126124a8576124a7612023565b5b8235905067ffffffffffffffff8111156124c5576124c46123dc565b5b6020830191508360208202830111156124e1576124e06123e1565b5b9250929050565b60008060008060008060006080888a03121561250757612506612019565b5b60006125158a828b016123c7565b975050602088013567ffffffffffffffff8111156125365761253561201e565b5b6125428a828b016123e6565b9650965050604088013567ffffffffffffffff8111156125655761256461201e565b5b6125718a828b0161243c565b9450945050606088013567ffffffffffffffff8111156125945761259361201e565b5b6125a08a828b01612492565b925092505092959891949750929550565b600080602083850312156125c8576125c7612019565b5b600083013567ffffffffffffffff8111156125e6576125e561201e565b5b6125f28582860161243c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61263381611fdb565b82525050565b6126428161239e565b82525050565b60408201600082015161265e600085018261262a565b5060208201516126716020850182612639565b50505050565b60006126838383612648565b60408301905092915050565b6000602082019050919050565b60006126a7826125fe565b6126b18185612609565b93506126bc8361261a565b8060005b838110156126ed5781516126d48882612677565b97506126df8361268f565b9250506001810190506126c0565b5085935050505092915050565b60006020820190508181036000830152612714818461269c565b905092915050565b60006020828403121561273257612731612019565b5b600082013567ffffffffffffffff8111156127505761274f61201e565b5b61275c8482850161213b565b91505092915050565b61276e8161239e565b82525050565b6000606082019050818103600083015261278e8186612323565b905061279d6020830185612765565b6127aa6040830184611fe5565b949350505050565b60006127bd8261239e565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b60006020828403121561280657612805612019565b5b6000612814848285016127db565b91505092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c2070726f706160008201527f6761746552657075746174696f6e000000000000000000000000000000000000602082015250565b6000612879602e836122e8565b91506128848261281d565b604082019050919050565b600060208201905081810360008301526128a88161286c565b9050919050565b600081905092915050565b60006128c5826122dd565b6128cf81856128af565b93506128df8185602086016122f9565b80840191505092915050565b60006128f782846128ba565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297857607f821691505b60208210810361298b5761298a612931565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129cb82612169565b91506129d683612169565b92508282039050818112600084121682821360008512151617156129fd576129fc612991565b5b92915050565b6000612a0e82611fdb565b9150612a1983611fdb565b9250828201905080821115612a3157612a30612991565b5b92915050565b6000612a4282612169565b9150612a4d83612169565b925082820190508281121560008312168382126000841215161715612a7557612a74612991565b5b92915050565b6000612a8682612169565b91507f80000000000000000000000000000000000000000000000000000000000000008203612ab857612ab7612991565b5b816000039050919050565b6000612ace82611fdb565b9150612ad983611fdb565b9250828203905081811115612af157612af0612991565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20616464506f60008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b536022836122e8565b9150612b5e82612af7565b604082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000612be56025836122e8565b9150612bf082612b89565b604082019050919050565b60006020820190508181036000830152612c1481612bd8565b9050919050565b6000612c2682611fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5857612c57612991565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c93565b612cda8683612c93565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d17612d12612d0d84611fdb565b612cf2565b611fdb565b9050919050565b6000819050919050565b612d3183612cfc565b612d45612d3d82612d1e565b848454612ca0565b825550505050565b600090565b612d5a612d4d565b612d65818484612d28565b505050565b5b81811015612d8957612d7e600082612d52565b600181019050612d6b565b5050565b601f821115612dce57612d9f81612c6e565b612da884612c83565b81016020851015612db7578190505b612dcb612dc385612c83565b830182612d6a565b50505b505050565b600082821c905092915050565b6000612df160001984600802612dd3565b1980831691505092915050565b6000612e0a8383612de0565b9150826002028217905092915050565b612e248383612c63565b67ffffffffffffffff811115612e3d57612e3c61203e565b5b612e478254612960565b612e52828285612d8d565b6000601f831160018114612e815760008415612e6f578287013590505b612e798582612dfe565b865550612ee1565b601f198416612e8f86612c6e565b60005b82811015612eb757848901358255600182019150602085019450602081019050612e92565b86831015612ed45784890135612ed0601f891682612de0565b8355505b6001600288020188555050505b50505050505050565b6000612ef683856128af565b9350612f038385846120ea565b82840190509392505050565b6000612f1c828486612eea565b91508190509392505050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000612f846026836122e8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b60008135612fc7816121d7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61300984612fd0565b9350801983169250808416831791505092915050565b61302882612cfc565b61303b61303482612d1e565b8354612fdd565b8255505050565b6000813561304f816123b0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61307884612fd0565b9350801983169250808416831791505092915050565b60006130a96130a461309f8461237e565b612cf2565b61237e565b9050919050565b60006130bb8261308e565b9050919050565b60006130cd826130b0565b9050919050565b6000819050919050565b6130e7826130c2565b6130fa6130f3826130d4565b8354613058565b8255505050565b60008101600083018061311381612fba565b905061311f818461301f565b50505060018101602083018061313481613042565b905061314081846130de565b5050505050565b6131518282613101565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16022836122e8565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112613212576132116131e7565b5b80830191505092915050565b6000813561322b81612173565b80915050919050565b600061324f61324a61324584612169565b612cf2565b612169565b9050919050565b6000819050919050565b61326982613234565b61327c61327582613256565b8354612fdd565b8255505050565b600080833560016020038436030381126132a05761329f6131e7565b5b80840192508235915067ffffffffffffffff8211156132c2576132c16131ec565b5b6020830192506001820236038313156132de576132dd6131f1565b5b509250929050565b6132f1838383612e1a565b505050565b6000810160008301806133088161321e565b90506133148184613260565b50505060018101602083016133298185613283565b6133348183866132e6565b505050505050565b61334682826132f6565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006133a66028836122e8565b91506133b18261334a565b604082019050919050565b600060208201905081810360008301526133d581613399565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b60006134386027836122e8565b9150613443826133dc565b604082019050919050565b600060208201905081810360008301526134678161342b565b9050919050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b60006134ca602c836122e8565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b600061355c602d836122e8565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b600061359e83856122e8565b93506135ab8385846120ea565b6135b48361202d565b840190509392505050565b600060208201905081810360008301526135da818486613592565b90509392505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061363f6021836122e8565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b600061368082612169565b915061368b83612169565b925082820261369981612169565b91507f800000000000000000000000000000000000000000000000000000000000000084146000841216156136d1576136d0612991565b5b82820584148315176136e6576136e5612991565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372782612169565b915061373283612169565b925082613742576137416136ed565b5b600160000383147f80000000000000000000000000000000000000000000000000000000000000008314161561377b5761377a612991565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b60006137e26026836122e8565b91506137ed82613786565b604082019050919050565b60006020820190508181036000830152613811816137d5565b9050919050565b600060408201905061382d6000830185612765565b61383a6020830184611fe5565b9392505050565b60006020820190506138566000830184612765565b92915050565b60006060820190506138716000830186612765565b61387e6020830185612765565b61388b6040830184611fe5565b949350505050565b6000815190506138a2816121d7565b92915050565b6000602082840312156138be576138bd612019565b5b60006138cc84828501613893565b9150509291505056fea2646970667358221220c34fe26aec1b950c6bf2505bc08a787b81b3216e6c1ccab717b13c38b029c52964736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/backend/contractArtifacts/Onboarding.json b/backend/contractArtifacts/Onboarding.json index 726ae3b..ea791b7 100644 --- a/backend/contractArtifacts/Onboarding.json +++ b/backend/contractArtifacts/Onboarding.json @@ -219,13 +219,7 @@ } ], "name": "onValidate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [], "stateMutability": "nonpayable", "type": "function" }, @@ -478,8 +472,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b50604051620036be380380620036be8339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b60805161345862000266600039600081816104dc01528181610a4901528181610b1901528181610c3601528181610e490152818161106301526110f501526134586000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611883565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b9190611964565b6104da565b005b34801561013e57600080fd5b5061014761067a565b60405161015491906119c6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a37565b610680565b60405161019191906119c6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611aab565b6106ff565b6040516101d49796959493929190611c09565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611cb2565b61088b565b005b610220600480360381019061021b9190611d14565b610cf6565b005b34801561022e57600080fd5b50610237610e3f565b60405161024491906119c6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d88565b610e45565b60405161028191906119c6565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611e22565b6111f3565b005b3480156102bf57600080fd5b506102c8611367565b6040516102d591906119c6565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611aab565b61136d565b604051610313929190611e62565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611ee1565b611391565b005b34801561035157600080fd5b5061036c60048036038101906103679190611aab565b6115c9565b60405161037c9493929190611f76565b60405180910390f35b34801561039157600080fd5b5061039a611626565b6040516103a791906119c6565b60405180910390f35b6003543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90612007565b60405180910390fd5b60006007600081548092919061040a90612056565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047b61162c565b816003018190555083838260040191826104969291906122e4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104cc929190611e62565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055f90612426565b60405180910390fd5b600082116105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a290612492565b60405180910390fd5b6000600160008154809291906105c090612056565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261063491906124b2565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161066b91906119c6565b60405180910390a15050505050565b60075481565b60008083838101906106929190611aab565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106e9929190611e62565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461076790612107565b80601f016020809104026020016040519081016040528092919081815260200182805461079390612107565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b5050505050908060050180546107f590612107565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612107565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108b6576108b5611ae7565b5b8160020160009054906101000a900460ff1660038111156108da576108d9611ae7565b5b1461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612532565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561095c5761095b611ae7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561099a576109996120a9565b5b6040519080825280602002602001820160405280156109d357816020015b6109c06117e4565b8152602001906001900390816109b85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a3c57610a3b612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610aaa939291906128ef565b600060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610b0d92919061293b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b649190612993565b8660010154610b7391906129c4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610bbd91906119c6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bef989796959493929190612b24565b60206040518083038185885af1158015610c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c329190612bc7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610cbc9493929190612bf4565b600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610d0b90612056565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d8691906119c6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610db5959493929190612c8e565b60206040518083038185885af1158015610dd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df89190612bc7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e2f91906119c6565b60405180910390a1505050505050565b60035481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d55565b60405180910390fd5b60008383810190610ee69190611aab565b90506000600660008381526020019081526020016000209050881580610f0a575087155b15610f95578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f5e9190612993565b9081150290604051600060405180830381858888f19350505050158015610f89573d6000803e3d6000fd5b506001925050506111e9565b60606000600167ffffffffffffffff811115610fb457610fb36120a9565b5b604051908082528060200260200182016040528015610fed57816020015b610fda6117e4565b815260200190600190039081610fd25790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061105657611055612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110c193929190612e9c565b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111409190612993565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b815260040161119c9796959493929190612f0e565b60206040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612bc7565b5060009450505050505b9695505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300c565b60405180910390fd5b8060030160009054906101000a900460ff16156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061309e565b60405180910390fd5b806002015442111561131257814261130591906124b2565b816002018190555061132b565b81816002015461132291906124b2565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161135a91906119c6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156113bc576113bb611ae7565b5b8160020160009054906101000a900460ff1660038111156113e0576113df611ae7565b5b14611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061310a565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c39061319c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114f4576114f3611ae7565b5b0217905550858583600501918261150c9291906122e4565b5060005b84849050811015611588578260060185858381811061153257611531612552565b5b905060200281019061154491906131cb565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115799190613377565b50508080600101915050611510565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516115b891906119c6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061163661166f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116f35760008082815260200190815260200160002060030160009054906101000a900460ff166116e6576000808281526020019081526020016000206002015442116116e65760008082815260200190815260200160002060010154826116e391906124b2565b91505b8080600101915050611675565b5060008111611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906133d1565b60405180910390fd5b6000814461174591906133f1565b9050600080600090505b6001548110156117dd5760008082815260200190815260200160002060030160009054906101000a900460ff166117d0576000808281526020019081526020016000206002015442116117d05760008082815260200190815260200160002060010154826117bd91906124b2565b9150828211156117cf578094506117dd565b5b808060010191505061174f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118435761184261181e565b5b8235905067ffffffffffffffff8111156118605761185f611823565b5b60208301915083600182028301111561187c5761187b611828565b5b9250929050565b6000806020838503121561189a57611899611814565b5b600083013567ffffffffffffffff8111156118b8576118b7611819565b5b6118c48582860161182d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118fb826118d0565b9050919050565b61190b816118f0565b811461191657600080fd5b50565b60008135905061192881611902565b92915050565b6000819050919050565b6119418161192e565b811461194c57600080fd5b50565b60008135905061195e81611938565b92915050565b60008060006060848603121561197d5761197c611814565b5b600061198b86828701611919565b935050602061199c8682870161194f565b92505060406119ad8682870161194f565b9150509250925092565b6119c08161192e565b82525050565b60006020820190506119db60008301846119b7565b92915050565b60008083601f8401126119f7576119f661181e565b5b8235905067ffffffffffffffff811115611a1457611a13611823565b5b602083019150836001820283011115611a3057611a2f611828565b5b9250929050565b60008060008060608587031215611a5157611a50611814565b5b6000611a5f8782880161194f565b9450506020611a708782880161194f565b935050604085013567ffffffffffffffff811115611a9157611a90611819565b5b611a9d878288016119e1565b925092505092959194509250565b600060208284031215611ac157611ac0611814565b5b6000611acf8482850161194f565b91505092915050565b611ae1816118f0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b2757611b26611ae7565b5b50565b6000819050611b3882611b16565b919050565b6000611b4882611b2a565b9050919050565b611b5881611b3d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b98578082015181840152602081019050611b7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc082611b5e565b611bca8185611b69565b9350611bda818560208601611b7a565b611be381611ba4565b840191505092915050565b60008115159050919050565b611c0381611bee565b82525050565b600060e082019050611c1e600083018a611ad8565b611c2b60208301896119b7565b611c386040830188611b4f565b611c4560608301876119b7565b8181036080830152611c578186611bb5565b905081810360a0830152611c6b8185611bb5565b9050611c7a60c0830184611bfa565b98975050505050505050565b611c8f81611bee565b8114611c9a57600080fd5b50565b600081359050611cac81611c86565b92915050565b60008060408385031215611cc957611cc8611814565b5b6000611cd78582860161194f565b9250506020611ce885828601611c9d565b9150509250929050565b600081905082602060030282011115611d0e57611d0d611828565b5b92915050565b60008060008060a08587031215611d2e57611d2d611814565b5b6000611d3c8782880161194f565b945050602085013567ffffffffffffffff811115611d5d57611d5c611819565b5b611d698782880161182d565b93509350506040611d7c87828801611cf2565b91505092959194509250565b60008060008060008060a08789031215611da557611da4611814565b5b6000611db389828a01611c9d565b9650506020611dc489828a01611c9d565b9550506040611dd589828a0161194f565b9450506060611de689828a0161194f565b935050608087013567ffffffffffffffff811115611e0757611e06611819565b5b611e1389828a016119e1565b92509250509295509295509295565b60008060408385031215611e3957611e38611814565b5b6000611e478582860161194f565b9250506020611e588582860161194f565b9150509250929050565b6000604082019050611e7760008301856119b7565b611e8460208301846119b7565b9392505050565b60008083601f840112611ea157611ea061181e565b5b8235905067ffffffffffffffff811115611ebe57611ebd611823565b5b602083019150836020820283011115611eda57611ed9611828565b5b9250929050565b600080600080600060608688031215611efd57611efc611814565b5b6000611f0b8882890161194f565b955050602086013567ffffffffffffffff811115611f2c57611f2b611819565b5b611f388882890161182d565b9450945050604086013567ffffffffffffffff811115611f5b57611f5a611819565b5b611f6788828901611e8b565b92509250509295509295909350565b6000608082019050611f8b6000830187611ad8565b611f9860208301866119b7565b611fa560408301856119b7565b611fb26060830184611bfa565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611ff1601083611b69565b9150611ffc82611fbb565b602082019050919050565b6000602082019050818103600083015261202081611fe4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120618261192e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209357612092612027565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061211f57607f821691505b602082108103612132576121316120d8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261219a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261215d565b6121a4868361215d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121e16121dc6121d78461192e565b6121bc565b61192e565b9050919050565b6000819050919050565b6121fb836121c6565b61220f612207826121e8565b84845461216a565b825550505050565b600090565b612224612217565b61222f8184846121f2565b505050565b5b818110156122535761224860008261221c565b600181019050612235565b5050565b601f8211156122985761226981612138565b6122728461214d565b81016020851015612281578190505b61229561228d8561214d565b830182612234565b50505b505050565b600082821c905092915050565b60006122bb6000198460080261229d565b1980831691505092915050565b60006122d483836122aa565b9150826002028217905092915050565b6122ee838361209e565b67ffffffffffffffff811115612307576123066120a9565b5b6123118254612107565b61231c828285612257565b6000601f83116001811461234b5760008415612339578287013590505b61234385826122c8565b8655506123ab565b601f19841661235986612138565b60005b828110156123815784890135825560018201915060208501945060208101905061235c565b8683101561239e578489013561239a601f8916826122aa565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000612410603683611b69565b915061241b826123b4565b604082019050919050565b6000602082019050818103600083015261243f81612403565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061247c601183611b69565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b60006124bd8261192e565b91506124c88361192e565b92508282019050808211156124e0576124df612027565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061251c602083611b69565b9150612527826124e6565b602082019050919050565b6000602082019050818103600083015261254b8161250f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125b68161192e565b82525050565b6125c5816118f0565b82525050565b6040820160008201516125e160008501826125ad565b5060208201516125f460208501826125bc565b50505050565b600061260683836125cb565b60408301905092915050565b6000602082019050919050565b600061262a82612581565b612634818561258c565b935061263f8361259d565b8060005b8381101561267057815161265788826125fa565b975061266283612612565b925050600181019050612643565b5085935050505092915050565b6000815461268a81612107565b6126948186611b69565b945060018216600081146126af57600181146126c5576126f8565b60ff1983168652811515602002860193506126f8565b6126ce85612138565b60005b838110156126f0578154818901526001820191506020810190506126d1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061275c61275783612732565b61273f565b9050919050565b6000819050919050565b61277681612763565b82525050565b600082825260208201905092915050565b6000815461279a81612107565b6127a4818661277c565b945060018216600081146127bf57600181146127d557612808565b60ff198316865281151560200286019350612808565b6127de85612138565b60005b83811015612800578154818901526001820191506020810190506127e1565b808801955050505b50505092915050565b600060408301600080840154905061282881612749565b612835600087018261276d565b5060018401858303602087015261284c838261278d565b925050819250505092915050565b60006128668383612811565b905092915050565b6000600282019050919050565b600061288682612701565b612890818561270c565b9350836020820285016128a28561271d565b8060005b858110156128dd578484038952816128be858261285a565b94506128c98361286e565b925060208a019950506001810190506128a6565b50829750879550505050505092915050565b60006060820190508181036000830152612909818661261f565b9050818103602083015261291d818561267d565b90508181036040830152612931818461287b565b9050949350505050565b600060408201905061295060008301856119b7565b61295d6020830184611bfa565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299e8261192e565b91506129a98361192e565b9250826129b9576129b8612964565b5b828204905092915050565b60006129cf8261192e565b91506129da8361192e565b92508282039050818111156129f2576129f1612027565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a2483836125ad565b60208301905092915050565b6000602082019050919050565b612a46816129f8565b612a508184612a03565b9250612a5b82612a0e565b8060005b83811015612a8c578151612a738782612a18565b9650612a7e83612a30565b925050600181019050612a5f565b505050505050565b6000819050919050565b6000612ab9612ab4612aaf84612a94565b6121bc565b61192e565b9050919050565b612ac981612a9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612af682612acf565b612b008185612ada565b9350612b10818560208601611b7a565b612b1981611ba4565b840191505092915050565b6000610140820190508181036000830152612b3f818b61267d565b9050612b4e602083018a6119b7565b612b5b6040830189612a3d565b612b686080830188612a3d565b612b7560c0830187612ac0565b612b8260e0830186611bfa565b612b90610100830185611bfa565b818103610120830152612ba38184612aeb565b90509998505050505050505050565b600081519050612bc181611938565b92915050565b600060208284031215612bdd57612bdc611814565b5b6000612beb84828501612bb2565b91505092915050565b6000608082019050612c0960008301876119b7565b612c166020830186611ad8565b612c2360408301856119b7565b612c306060830184611bfa565b95945050505050565b82818337600083830152505050565b6000612c548385611b69565b9350612c61838584612c39565b612c6a83611ba4565b840190509392505050565b82818337505050565b612c8a60608383612c75565b5050565b600060c0820190508181036000830152612ca9818789612c48565b9050612cb86020830186612c7e565b612cc56080830185611bfa565b81810360a0830152612cd78184612aeb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d3f603183611b69565b9150612d4a82612ce3565b604082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d9b82611b5e565b612da5818561277c565b9350612db5818560208601611b7a565b612dbe81611ba4565b840191505092915050565b6000604083016000830151612de1600086018261276d565b5060208301518482036020860152612df98282612d90565b9150508091505092915050565b6000612e128383612dc9565b905092915050565b6000602082019050919050565b6000612e3282612d75565b612e3c818561270c565b935083602082028501612e4e85612d80565b8060005b85811015612e8a5784840389528151612e6b8582612e06565b9450612e7683612e1a565b925060208a01995050600181019050612e52565b50829750879550505050505092915050565b60006060820190508181036000830152612eb6818661261f565b90508181036020830152612eca818561267d565b90508181036040830152612ede8184612e27565b9050949350505050565b50565b6000612ef8600083612ada565b9150612f0382612ee8565b600082019050919050565b6000610140820190508181036000830152612f29818a61267d565b9050612f3860208301896119b7565b612f456040830188612a3d565b612f526080830187612a3d565b612f5f60c0830186612ac0565b612f6c60e0830185611bfa565b612f7a610100830184611bfa565b818103610120830152612f8c81612eeb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612ff6603383611b69565b915061300182612f9a565b604082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483611b69565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130f4601883611b69565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613186603a83611b69565b91506131918261312a565b604082019050919050565b600060208201905081810360008301526131b581613179565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131e7576131e66131bc565b5b80830191505092915050565b6131fc81612763565b811461320757600080fd5b50565b60008135613217816131f3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61325984613220565b9350801983169250808416831791505092915050565b600061328a61328561328084612763565b6121bc565b612763565b9050919050565b6000819050919050565b6132a48261326f565b6132b76132b082613291565b835461322d565b8255505050565b600080833560016020038436030381126132db576132da6131bc565b5b80840192508235915067ffffffffffffffff8211156132fd576132fc6131c1565b5b602083019250600182023603831315613319576133186131c6565b5b509250929050565b61332c8383836122e4565b505050565b6000810160008301806133438161320a565b905061334f818461329b565b505050600181016020830161336481856132be565b61336f818386613321565b505050505050565b6133818282613331565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006133bb601a83611b69565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261192e565b91506134078361192e565b92508261341757613416612964565b5b82820690509291505056fea26469706673582212207f4cb2aece81c4e0f14f3898d320d31a0a30f388e4626c7cc7da922dc69e5a6064736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611883565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b9190611964565b6104da565b005b34801561013e57600080fd5b5061014761067a565b60405161015491906119c6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a37565b610680565b60405161019191906119c6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611aab565b6106ff565b6040516101d49796959493929190611c09565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611cb2565b61088b565b005b610220600480360381019061021b9190611d14565b610cf6565b005b34801561022e57600080fd5b50610237610e3f565b60405161024491906119c6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d88565b610e45565b60405161028191906119c6565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611e22565b6111f3565b005b3480156102bf57600080fd5b506102c8611367565b6040516102d591906119c6565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611aab565b61136d565b604051610313929190611e62565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611ee1565b611391565b005b34801561035157600080fd5b5061036c60048036038101906103679190611aab565b6115c9565b60405161037c9493929190611f76565b60405180910390f35b34801561039157600080fd5b5061039a611626565b6040516103a791906119c6565b60405180910390f35b6003543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90612007565b60405180910390fd5b60006007600081548092919061040a90612056565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047b61162c565b816003018190555083838260040191826104969291906122e4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104cc929190611e62565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055f90612426565b60405180910390fd5b600082116105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a290612492565b60405180910390fd5b6000600160008154809291906105c090612056565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261063491906124b2565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161066b91906119c6565b60405180910390a15050505050565b60075481565b60008083838101906106929190611aab565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106e9929190611e62565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461076790612107565b80601f016020809104026020016040519081016040528092919081815260200182805461079390612107565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b5050505050908060050180546107f590612107565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612107565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108b6576108b5611ae7565b5b8160020160009054906101000a900460ff1660038111156108da576108d9611ae7565b5b1461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612532565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561095c5761095b611ae7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561099a576109996120a9565b5b6040519080825280602002602001820160405280156109d357816020015b6109c06117e4565b8152602001906001900390816109b85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a3c57610a3b612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610aaa939291906128ef565b600060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610b0d92919061293b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b649190612993565b8660010154610b7391906129c4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610bbd91906119c6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bef989796959493929190612b24565b60206040518083038185885af1158015610c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c329190612bc7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610cbc9493929190612bf4565b600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610d0b90612056565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d8691906119c6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610db5959493929190612c8e565b60206040518083038185885af1158015610dd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df89190612bc7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e2f91906119c6565b60405180910390a1505050505050565b60035481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d55565b60405180910390fd5b60008383810190610ee69190611aab565b90506000600660008381526020019081526020016000209050881580610f0a575087155b15610f95578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f5e9190612993565b9081150290604051600060405180830381858888f19350505050158015610f89573d6000803e3d6000fd5b506001925050506111e9565b60606000600167ffffffffffffffff811115610fb457610fb36120a9565b5b604051908082528060200260200182016040528015610fed57816020015b610fda6117e4565b815260200190600190039081610fd25790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061105657611055612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110c193929190612e9c565b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111409190612993565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b815260040161119c9796959493929190612f0e565b60206040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612bc7565b5060009450505050505b9695505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300c565b60405180910390fd5b8060030160009054906101000a900460ff16156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061309e565b60405180910390fd5b806002015442111561131257814261130591906124b2565b816002018190555061132b565b81816002015461132291906124b2565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161135a91906119c6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156113bc576113bb611ae7565b5b8160020160009054906101000a900460ff1660038111156113e0576113df611ae7565b5b14611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061310a565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c39061319c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114f4576114f3611ae7565b5b0217905550858583600501918261150c9291906122e4565b5060005b84849050811015611588578260060185858381811061153257611531612552565b5b905060200281019061154491906131cb565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115799190613377565b50508080600101915050611510565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516115b891906119c6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061163661166f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116f35760008082815260200190815260200160002060030160009054906101000a900460ff166116e6576000808281526020019081526020016000206002015442116116e65760008082815260200190815260200160002060010154826116e391906124b2565b91505b8080600101915050611675565b5060008111611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906133d1565b60405180910390fd5b6000814461174591906133f1565b9050600080600090505b6001548110156117dd5760008082815260200190815260200160002060030160009054906101000a900460ff166117d0576000808281526020019081526020016000206002015442116117d05760008082815260200190815260200160002060010154826117bd91906124b2565b9150828211156117cf578094506117dd565b5b808060010191505061174f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118435761184261181e565b5b8235905067ffffffffffffffff8111156118605761185f611823565b5b60208301915083600182028301111561187c5761187b611828565b5b9250929050565b6000806020838503121561189a57611899611814565b5b600083013567ffffffffffffffff8111156118b8576118b7611819565b5b6118c48582860161182d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118fb826118d0565b9050919050565b61190b816118f0565b811461191657600080fd5b50565b60008135905061192881611902565b92915050565b6000819050919050565b6119418161192e565b811461194c57600080fd5b50565b60008135905061195e81611938565b92915050565b60008060006060848603121561197d5761197c611814565b5b600061198b86828701611919565b935050602061199c8682870161194f565b92505060406119ad8682870161194f565b9150509250925092565b6119c08161192e565b82525050565b60006020820190506119db60008301846119b7565b92915050565b60008083601f8401126119f7576119f661181e565b5b8235905067ffffffffffffffff811115611a1457611a13611823565b5b602083019150836001820283011115611a3057611a2f611828565b5b9250929050565b60008060008060608587031215611a5157611a50611814565b5b6000611a5f8782880161194f565b9450506020611a708782880161194f565b935050604085013567ffffffffffffffff811115611a9157611a90611819565b5b611a9d878288016119e1565b925092505092959194509250565b600060208284031215611ac157611ac0611814565b5b6000611acf8482850161194f565b91505092915050565b611ae1816118f0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b2757611b26611ae7565b5b50565b6000819050611b3882611b16565b919050565b6000611b4882611b2a565b9050919050565b611b5881611b3d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b98578082015181840152602081019050611b7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc082611b5e565b611bca8185611b69565b9350611bda818560208601611b7a565b611be381611ba4565b840191505092915050565b60008115159050919050565b611c0381611bee565b82525050565b600060e082019050611c1e600083018a611ad8565b611c2b60208301896119b7565b611c386040830188611b4f565b611c4560608301876119b7565b8181036080830152611c578186611bb5565b905081810360a0830152611c6b8185611bb5565b9050611c7a60c0830184611bfa565b98975050505050505050565b611c8f81611bee565b8114611c9a57600080fd5b50565b600081359050611cac81611c86565b92915050565b60008060408385031215611cc957611cc8611814565b5b6000611cd78582860161194f565b9250506020611ce885828601611c9d565b9150509250929050565b600081905082602060030282011115611d0e57611d0d611828565b5b92915050565b60008060008060a08587031215611d2e57611d2d611814565b5b6000611d3c8782880161194f565b945050602085013567ffffffffffffffff811115611d5d57611d5c611819565b5b611d698782880161182d565b93509350506040611d7c87828801611cf2565b91505092959194509250565b60008060008060008060a08789031215611da557611da4611814565b5b6000611db389828a01611c9d565b9650506020611dc489828a01611c9d565b9550506040611dd589828a0161194f565b9450506060611de689828a0161194f565b935050608087013567ffffffffffffffff811115611e0757611e06611819565b5b611e1389828a016119e1565b92509250509295509295509295565b60008060408385031215611e3957611e38611814565b5b6000611e478582860161194f565b9250506020611e588582860161194f565b9150509250929050565b6000604082019050611e7760008301856119b7565b611e8460208301846119b7565b9392505050565b60008083601f840112611ea157611ea061181e565b5b8235905067ffffffffffffffff811115611ebe57611ebd611823565b5b602083019150836020820283011115611eda57611ed9611828565b5b9250929050565b600080600080600060608688031215611efd57611efc611814565b5b6000611f0b8882890161194f565b955050602086013567ffffffffffffffff811115611f2c57611f2b611819565b5b611f388882890161182d565b9450945050604086013567ffffffffffffffff811115611f5b57611f5a611819565b5b611f6788828901611e8b565b92509250509295509295909350565b6000608082019050611f8b6000830187611ad8565b611f9860208301866119b7565b611fa560408301856119b7565b611fb26060830184611bfa565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611ff1601083611b69565b9150611ffc82611fbb565b602082019050919050565b6000602082019050818103600083015261202081611fe4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120618261192e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209357612092612027565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061211f57607f821691505b602082108103612132576121316120d8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261219a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261215d565b6121a4868361215d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121e16121dc6121d78461192e565b6121bc565b61192e565b9050919050565b6000819050919050565b6121fb836121c6565b61220f612207826121e8565b84845461216a565b825550505050565b600090565b612224612217565b61222f8184846121f2565b505050565b5b818110156122535761224860008261221c565b600181019050612235565b5050565b601f8211156122985761226981612138565b6122728461214d565b81016020851015612281578190505b61229561228d8561214d565b830182612234565b50505b505050565b600082821c905092915050565b60006122bb6000198460080261229d565b1980831691505092915050565b60006122d483836122aa565b9150826002028217905092915050565b6122ee838361209e565b67ffffffffffffffff811115612307576123066120a9565b5b6123118254612107565b61231c828285612257565b6000601f83116001811461234b5760008415612339578287013590505b61234385826122c8565b8655506123ab565b601f19841661235986612138565b60005b828110156123815784890135825560018201915060208501945060208101905061235c565b8683101561239e578489013561239a601f8916826122aa565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000612410603683611b69565b915061241b826123b4565b604082019050919050565b6000602082019050818103600083015261243f81612403565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061247c601183611b69565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b60006124bd8261192e565b91506124c88361192e565b92508282019050808211156124e0576124df612027565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061251c602083611b69565b9150612527826124e6565b602082019050919050565b6000602082019050818103600083015261254b8161250f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125b68161192e565b82525050565b6125c5816118f0565b82525050565b6040820160008201516125e160008501826125ad565b5060208201516125f460208501826125bc565b50505050565b600061260683836125cb565b60408301905092915050565b6000602082019050919050565b600061262a82612581565b612634818561258c565b935061263f8361259d565b8060005b8381101561267057815161265788826125fa565b975061266283612612565b925050600181019050612643565b5085935050505092915050565b6000815461268a81612107565b6126948186611b69565b945060018216600081146126af57600181146126c5576126f8565b60ff1983168652811515602002860193506126f8565b6126ce85612138565b60005b838110156126f0578154818901526001820191506020810190506126d1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061275c61275783612732565b61273f565b9050919050565b6000819050919050565b61277681612763565b82525050565b600082825260208201905092915050565b6000815461279a81612107565b6127a4818661277c565b945060018216600081146127bf57600181146127d557612808565b60ff198316865281151560200286019350612808565b6127de85612138565b60005b83811015612800578154818901526001820191506020810190506127e1565b808801955050505b50505092915050565b600060408301600080840154905061282881612749565b612835600087018261276d565b5060018401858303602087015261284c838261278d565b925050819250505092915050565b60006128668383612811565b905092915050565b6000600282019050919050565b600061288682612701565b612890818561270c565b9350836020820285016128a28561271d565b8060005b858110156128dd578484038952816128be858261285a565b94506128c98361286e565b925060208a019950506001810190506128a6565b50829750879550505050505092915050565b60006060820190508181036000830152612909818661261f565b9050818103602083015261291d818561267d565b90508181036040830152612931818461287b565b9050949350505050565b600060408201905061295060008301856119b7565b61295d6020830184611bfa565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299e8261192e565b91506129a98361192e565b9250826129b9576129b8612964565b5b828204905092915050565b60006129cf8261192e565b91506129da8361192e565b92508282039050818111156129f2576129f1612027565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a2483836125ad565b60208301905092915050565b6000602082019050919050565b612a46816129f8565b612a508184612a03565b9250612a5b82612a0e565b8060005b83811015612a8c578151612a738782612a18565b9650612a7e83612a30565b925050600181019050612a5f565b505050505050565b6000819050919050565b6000612ab9612ab4612aaf84612a94565b6121bc565b61192e565b9050919050565b612ac981612a9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612af682612acf565b612b008185612ada565b9350612b10818560208601611b7a565b612b1981611ba4565b840191505092915050565b6000610140820190508181036000830152612b3f818b61267d565b9050612b4e602083018a6119b7565b612b5b6040830189612a3d565b612b686080830188612a3d565b612b7560c0830187612ac0565b612b8260e0830186611bfa565b612b90610100830185611bfa565b818103610120830152612ba38184612aeb565b90509998505050505050505050565b600081519050612bc181611938565b92915050565b600060208284031215612bdd57612bdc611814565b5b6000612beb84828501612bb2565b91505092915050565b6000608082019050612c0960008301876119b7565b612c166020830186611ad8565b612c2360408301856119b7565b612c306060830184611bfa565b95945050505050565b82818337600083830152505050565b6000612c548385611b69565b9350612c61838584612c39565b612c6a83611ba4565b840190509392505050565b82818337505050565b612c8a60608383612c75565b5050565b600060c0820190508181036000830152612ca9818789612c48565b9050612cb86020830186612c7e565b612cc56080830185611bfa565b81810360a0830152612cd78184612aeb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d3f603183611b69565b9150612d4a82612ce3565b604082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d9b82611b5e565b612da5818561277c565b9350612db5818560208601611b7a565b612dbe81611ba4565b840191505092915050565b6000604083016000830151612de1600086018261276d565b5060208301518482036020860152612df98282612d90565b9150508091505092915050565b6000612e128383612dc9565b905092915050565b6000602082019050919050565b6000612e3282612d75565b612e3c818561270c565b935083602082028501612e4e85612d80565b8060005b85811015612e8a5784840389528151612e6b8582612e06565b9450612e7683612e1a565b925060208a01995050600181019050612e52565b50829750879550505050505092915050565b60006060820190508181036000830152612eb6818661261f565b90508181036020830152612eca818561267d565b90508181036040830152612ede8184612e27565b9050949350505050565b50565b6000612ef8600083612ada565b9150612f0382612ee8565b600082019050919050565b6000610140820190508181036000830152612f29818a61267d565b9050612f3860208301896119b7565b612f456040830188612a3d565b612f526080830187612a3d565b612f5f60c0830186612ac0565b612f6c60e0830185611bfa565b612f7a610100830184611bfa565b818103610120830152612f8c81612eeb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612ff6603383611b69565b915061300182612f9a565b604082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483611b69565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130f4601883611b69565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613186603a83611b69565b91506131918261312a565b604082019050919050565b600060208201905081810360008301526131b581613179565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131e7576131e66131bc565b5b80830191505092915050565b6131fc81612763565b811461320757600080fd5b50565b60008135613217816131f3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61325984613220565b9350801983169250808416831791505092915050565b600061328a61328561328084612763565b6121bc565b612763565b9050919050565b6000819050919050565b6132a48261326f565b6132b76132b082613291565b835461322d565b8255505050565b600080833560016020038436030381126132db576132da6131bc565b5b80840192508235915067ffffffffffffffff8211156132fd576132fc6131c1565b5b602083019250600182023603831315613319576133186131c6565b5b509250929050565b61332c8383836122e4565b505050565b6000810160008301806133438161320a565b905061334f818461329b565b505050600181016020830161336481856132be565b61336f818386613321565b505050505050565b6133818282613331565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006133bb601a83611b69565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261192e565b91506134078361192e565b92508261341757613416612964565b5b82820690509291505056fea26469706673582212207f4cb2aece81c4e0f14f3898d320d31a0a30f388e4626c7cc7da922dc69e5a6064736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b506040516200369e3803806200369e8339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b60805161343862000266600039600081816104c801528181610a3501528181610b0501528181610c2201528181610e330152818161104901526110db01526134386000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611863565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b9190611944565b6104c6565b005b34801561013e57600080fd5b50610147610666565b60405161015491906119a6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a17565b61066c565b60405161019191906119a6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a8b565b6106eb565b6040516101d49796959493929190611be9565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c92565b610877565b005b610220600480360381019061021b9190611cf4565b610ce2565b005b34801561022e57600080fd5b50610237610e2b565b60405161024491906119a6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d68565b610e31565b005b34801561028257600080fd5b5061029d60048036038101906102989190611e02565b6111d3565b005b3480156102ab57600080fd5b506102b4611347565b6040516102c191906119a6565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611a8b565b61134d565b6040516102ff929190611e42565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611ec1565b611371565b005b34801561033d57600080fd5b5061035860048036038101906103539190611a8b565b6115a9565b6040516103689493929190611f56565b60405180910390f35b34801561037d57600080fd5b50610386611606565b60405161039391906119a6565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611fe7565b60405180910390fd5b6000600760008154809291906103f690612036565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061046761160c565b816003018190555083838260040191826104829291906122c4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611e42565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90612406565b60405180910390fd5b60008211610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e90612472565b60405180910390fd5b6000600160008154809291906105ac90612036565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106209190612492565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161065791906119a6565b60405180910390a15050505050565b60075481565b600080838381019061067e9190611a8b565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106d5929190611e42565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff1690806003015490806004018054610753906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461077f906120e7565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050908060050180546107e1906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906120e7565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108a2576108a1611ac7565b5b8160020160009054906101000a900460ff1660038111156108c6576108c5611ac7565b5b14610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612512565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561094857610947611ac7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561098657610985612089565b5b6040519080825280602002602001820160405280156109bf57816020015b6109ac6117c4565b8152602001906001900390816109a45790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2857610a27612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a96939291906128cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610af992919061291b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b509190612973565b8660010154610b5f91906129a4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610ba991906119a6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bdb989796959493929190612b04565b60206040518083038185885af1158015610bf9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c1e9190612ba7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610ca89493929190612bd4565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610cf790612036565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d7291906119a6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610da1959493929190612c6e565b60206040518083038185885af1158015610dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610de49190612ba7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e1b91906119a6565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612d35565b60405180910390fd5b60008282810190610ed09190611a8b565b90506000600660008381526020019081526020016000209050871580610ef4575086155b15610f7b578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f489190612973565b9081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5050506111cb565b60606000600167ffffffffffffffff811115610f9a57610f99612089565b5b604051908082528060200260200182016040528015610fd357816020015b610fc06117c4565b815260200190600190039081610fb85790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061103c5761103b612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110a793929190612e7c565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111269190612973565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016111829796959493929190612eee565b60206040518083038185885af11580156111a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111c59190612ba7565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612fec565b60405180910390fd5b8060030160009054906101000a900460ff16156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c49061307e565b60405180910390fd5b80600201544211156112f25781426112e59190612492565b816002018190555061130b565b8181600201546113029190612492565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161133a91906119a6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561139c5761139b611ac7565b5b8160020160009054906101000a900460ff1660038111156113c0576113bf611ac7565b5b14611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906130ea565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061317c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114d4576114d3611ac7565b5b021790555085858360050191826114ec9291906122c4565b5060005b84849050811015611568578260060185858381811061151257611511612532565b5b905060200281019061152491906131ab565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115599190613357565b505080806001019150506114f0565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161159891906119a6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061161661164f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116d35760008082815260200190815260200160002060030160009054906101000a900460ff166116c6576000808281526020019081526020016000206002015442116116c65760008082815260200190815260200160002060010154826116c39190612492565b91505b8080600101915050611655565b5060008111611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e906133b1565b60405180910390fd5b6000814461172591906133d1565b9050600080600090505b6001548110156117bd5760008082815260200190815260200160002060030160009054906101000a900460ff166117b0576000808281526020019081526020016000206002015442116117b057600080828152602001908152602001600020600101548261179d9190612492565b9150828211156117af578094506117bd565b5b808060010191505061172f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611823576118226117fe565b5b8235905067ffffffffffffffff8111156118405761183f611803565b5b60208301915083600182028301111561185c5761185b611808565b5b9250929050565b6000806020838503121561187a576118796117f4565b5b600083013567ffffffffffffffff811115611898576118976117f9565b5b6118a48582860161180d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118db826118b0565b9050919050565b6118eb816118d0565b81146118f657600080fd5b50565b600081359050611908816118e2565b92915050565b6000819050919050565b6119218161190e565b811461192c57600080fd5b50565b60008135905061193e81611918565b92915050565b60008060006060848603121561195d5761195c6117f4565b5b600061196b868287016118f9565b935050602061197c8682870161192f565b925050604061198d8682870161192f565b9150509250925092565b6119a08161190e565b82525050565b60006020820190506119bb6000830184611997565b92915050565b60008083601f8401126119d7576119d66117fe565b5b8235905067ffffffffffffffff8111156119f4576119f3611803565b5b602083019150836001820283011115611a1057611a0f611808565b5b9250929050565b60008060008060608587031215611a3157611a306117f4565b5b6000611a3f8782880161192f565b9450506020611a508782880161192f565b935050604085013567ffffffffffffffff811115611a7157611a706117f9565b5b611a7d878288016119c1565b925092505092959194509250565b600060208284031215611aa157611aa06117f4565b5b6000611aaf8482850161192f565b91505092915050565b611ac1816118d0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b0757611b06611ac7565b5b50565b6000819050611b1882611af6565b919050565b6000611b2882611b0a565b9050919050565b611b3881611b1d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b78578082015181840152602081019050611b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ba082611b3e565b611baa8185611b49565b9350611bba818560208601611b5a565b611bc381611b84565b840191505092915050565b60008115159050919050565b611be381611bce565b82525050565b600060e082019050611bfe600083018a611ab8565b611c0b6020830189611997565b611c186040830188611b2f565b611c256060830187611997565b8181036080830152611c378186611b95565b905081810360a0830152611c4b8185611b95565b9050611c5a60c0830184611bda565b98975050505050505050565b611c6f81611bce565b8114611c7a57600080fd5b50565b600081359050611c8c81611c66565b92915050565b60008060408385031215611ca957611ca86117f4565b5b6000611cb78582860161192f565b9250506020611cc885828601611c7d565b9150509250929050565b600081905082602060030282011115611cee57611ced611808565b5b92915050565b60008060008060a08587031215611d0e57611d0d6117f4565b5b6000611d1c8782880161192f565b945050602085013567ffffffffffffffff811115611d3d57611d3c6117f9565b5b611d498782880161180d565b93509350506040611d5c87828801611cd2565b91505092959194509250565b60008060008060008060a08789031215611d8557611d846117f4565b5b6000611d9389828a01611c7d565b9650506020611da489828a01611c7d565b9550506040611db589828a0161192f565b9450506060611dc689828a0161192f565b935050608087013567ffffffffffffffff811115611de757611de66117f9565b5b611df389828a016119c1565b92509250509295509295509295565b60008060408385031215611e1957611e186117f4565b5b6000611e278582860161192f565b9250506020611e388582860161192f565b9150509250929050565b6000604082019050611e576000830185611997565b611e646020830184611997565b9392505050565b60008083601f840112611e8157611e806117fe565b5b8235905067ffffffffffffffff811115611e9e57611e9d611803565b5b602083019150836020820283011115611eba57611eb9611808565b5b9250929050565b600080600080600060608688031215611edd57611edc6117f4565b5b6000611eeb8882890161192f565b955050602086013567ffffffffffffffff811115611f0c57611f0b6117f9565b5b611f188882890161180d565b9450945050604086013567ffffffffffffffff811115611f3b57611f3a6117f9565b5b611f4788828901611e6b565b92509250509295509295909350565b6000608082019050611f6b6000830187611ab8565b611f786020830186611997565b611f856040830185611997565b611f926060830184611bda565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611fd1601083611b49565b9150611fdc82611f9b565b602082019050919050565b6000602082019050818103600083015261200081611fc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120418261190e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361207357612072612007565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120ff57607f821691505b602082108103612112576121116120b8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261213d565b612184868361213d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121c16121bc6121b78461190e565b61219c565b61190e565b9050919050565b6000819050919050565b6121db836121a6565b6121ef6121e7826121c8565b84845461214a565b825550505050565b600090565b6122046121f7565b61220f8184846121d2565b505050565b5b81811015612233576122286000826121fc565b600181019050612215565b5050565b601f8211156122785761224981612118565b6122528461212d565b81016020851015612261578190505b61227561226d8561212d565b830182612214565b50505b505050565b600082821c905092915050565b600061229b6000198460080261227d565b1980831691505092915050565b60006122b4838361228a565b9150826002028217905092915050565b6122ce838361207e565b67ffffffffffffffff8111156122e7576122e6612089565b5b6122f182546120e7565b6122fc828285612237565b6000601f83116001811461232b5760008415612319578287013590505b61232385826122a8565b86555061238b565b601f19841661233986612118565b60005b828110156123615784890135825560018201915060208501945060208101905061233c565b8683101561237e578489013561237a601f89168261228a565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006123f0603683611b49565b91506123fb82612394565b604082019050919050565b6000602082019050818103600083015261241f816123e3565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061245c601183611b49565b915061246782612426565b602082019050919050565b6000602082019050818103600083015261248b8161244f565b9050919050565b600061249d8261190e565b91506124a88361190e565b92508282019050808211156124c0576124bf612007565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006124fc602083611b49565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125968161190e565b82525050565b6125a5816118d0565b82525050565b6040820160008201516125c1600085018261258d565b5060208201516125d4602085018261259c565b50505050565b60006125e683836125ab565b60408301905092915050565b6000602082019050919050565b600061260a82612561565b612614818561256c565b935061261f8361257d565b8060005b8381101561265057815161263788826125da565b9750612642836125f2565b925050600181019050612623565b5085935050505092915050565b6000815461266a816120e7565b6126748186611b49565b9450600182166000811461268f57600181146126a5576126d8565b60ff1983168652811515602002860193506126d8565b6126ae85612118565b60005b838110156126d0578154818901526001820191506020810190506126b1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061273c61273783612712565b61271f565b9050919050565b6000819050919050565b61275681612743565b82525050565b600082825260208201905092915050565b6000815461277a816120e7565b612784818661275c565b9450600182166000811461279f57600181146127b5576127e8565b60ff1983168652811515602002860193506127e8565b6127be85612118565b60005b838110156127e0578154818901526001820191506020810190506127c1565b808801955050505b50505092915050565b600060408301600080840154905061280881612729565b612815600087018261274d565b5060018401858303602087015261282c838261276d565b925050819250505092915050565b600061284683836127f1565b905092915050565b6000600282019050919050565b6000612866826126e1565b61287081856126ec565b935083602082028501612882856126fd565b8060005b858110156128bd5784840389528161289e858261283a565b94506128a98361284e565b925060208a01995050600181019050612886565b50829750879550505050505092915050565b600060608201905081810360008301526128e981866125ff565b905081810360208301526128fd818561265d565b90508181036040830152612911818461285b565b9050949350505050565b60006040820190506129306000830185611997565b61293d6020830184611bda565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297e8261190e565b91506129898361190e565b92508261299957612998612944565b5b828204905092915050565b60006129af8261190e565b91506129ba8361190e565b92508282039050818111156129d2576129d1612007565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a04838361258d565b60208301905092915050565b6000602082019050919050565b612a26816129d8565b612a3081846129e3565b9250612a3b826129ee565b8060005b83811015612a6c578151612a5387826129f8565b9650612a5e83612a10565b925050600181019050612a3f565b505050505050565b6000819050919050565b6000612a99612a94612a8f84612a74565b61219c565b61190e565b9050919050565b612aa981612a7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612ad682612aaf565b612ae08185612aba565b9350612af0818560208601611b5a565b612af981611b84565b840191505092915050565b6000610140820190508181036000830152612b1f818b61265d565b9050612b2e602083018a611997565b612b3b6040830189612a1d565b612b486080830188612a1d565b612b5560c0830187612aa0565b612b6260e0830186611bda565b612b70610100830185611bda565b818103610120830152612b838184612acb565b90509998505050505050505050565b600081519050612ba181611918565b92915050565b600060208284031215612bbd57612bbc6117f4565b5b6000612bcb84828501612b92565b91505092915050565b6000608082019050612be96000830187611997565b612bf66020830186611ab8565b612c036040830185611997565b612c106060830184611bda565b95945050505050565b82818337600083830152505050565b6000612c348385611b49565b9350612c41838584612c19565b612c4a83611b84565b840190509392505050565b82818337505050565b612c6a60608383612c55565b5050565b600060c0820190508181036000830152612c89818789612c28565b9050612c986020830186612c5e565b612ca56080830185611bda565b81810360a0830152612cb78184612acb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d1f603183611b49565b9150612d2a82612cc3565b604082019050919050565b60006020820190508181036000830152612d4e81612d12565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d7b82611b3e565b612d85818561275c565b9350612d95818560208601611b5a565b612d9e81611b84565b840191505092915050565b6000604083016000830151612dc1600086018261274d565b5060208301518482036020860152612dd98282612d70565b9150508091505092915050565b6000612df28383612da9565b905092915050565b6000602082019050919050565b6000612e1282612d55565b612e1c81856126ec565b935083602082028501612e2e85612d60565b8060005b85811015612e6a5784840389528151612e4b8582612de6565b9450612e5683612dfa565b925060208a01995050600181019050612e32565b50829750879550505050505092915050565b60006060820190508181036000830152612e9681866125ff565b90508181036020830152612eaa818561265d565b90508181036040830152612ebe8184612e07565b9050949350505050565b50565b6000612ed8600083612aba565b9150612ee382612ec8565b600082019050919050565b6000610140820190508181036000830152612f09818a61265d565b9050612f186020830189611997565b612f256040830188612a1d565b612f326080830187612a1d565b612f3f60c0830186612aa0565b612f4c60e0830185611bda565b612f5a610100830184611bda565b818103610120830152612f6c81612ecb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612fd6603383611b49565b9150612fe182612f7a565b604082019050919050565b6000602082019050818103600083015261300581612fc9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613068602483611b49565b91506130738261300c565b604082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130d4601883611b49565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613166603a83611b49565b91506131718261310a565b604082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131c7576131c661319c565b5b80830191505092915050565b6131dc81612743565b81146131e757600080fd5b50565b600081356131f7816131d3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61323984613200565b9350801983169250808416831791505092915050565b600061326a61326561326084612743565b61219c565b612743565b9050919050565b6000819050919050565b6132848261324f565b61329761329082613271565b835461320d565b8255505050565b600080833560016020038436030381126132bb576132ba61319c565b5b80840192508235915067ffffffffffffffff8211156132dd576132dc6131a1565b5b6020830192506001820236038313156132f9576132f86131a6565b5b509250929050565b61330c8383836122c4565b505050565b600081016000830180613323816131ea565b905061332f818461327b565b5050506001810160208301613344818561329e565b61334f818386613301565b505050505050565b6133618282613311565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b600061339b601a83611b49565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b60006133dc8261190e565b91506133e78361190e565b9250826133f7576133f6612944565b5b82820690509291505056fea26469706673582212206df67e317ebf3a0b98bea25a97e27222346d7b610a157599ac8e6f50387f2fc364736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611863565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b9190611944565b6104c6565b005b34801561013e57600080fd5b50610147610666565b60405161015491906119a6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a17565b61066c565b60405161019191906119a6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a8b565b6106eb565b6040516101d49796959493929190611be9565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c92565b610877565b005b610220600480360381019061021b9190611cf4565b610ce2565b005b34801561022e57600080fd5b50610237610e2b565b60405161024491906119a6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d68565b610e31565b005b34801561028257600080fd5b5061029d60048036038101906102989190611e02565b6111d3565b005b3480156102ab57600080fd5b506102b4611347565b6040516102c191906119a6565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611a8b565b61134d565b6040516102ff929190611e42565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611ec1565b611371565b005b34801561033d57600080fd5b5061035860048036038101906103539190611a8b565b6115a9565b6040516103689493929190611f56565b60405180910390f35b34801561037d57600080fd5b50610386611606565b60405161039391906119a6565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611fe7565b60405180910390fd5b6000600760008154809291906103f690612036565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061046761160c565b816003018190555083838260040191826104829291906122c4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611e42565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90612406565b60405180910390fd5b60008211610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e90612472565b60405180910390fd5b6000600160008154809291906105ac90612036565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106209190612492565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161065791906119a6565b60405180910390a15050505050565b60075481565b600080838381019061067e9190611a8b565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106d5929190611e42565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff1690806003015490806004018054610753906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461077f906120e7565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050908060050180546107e1906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906120e7565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108a2576108a1611ac7565b5b8160020160009054906101000a900460ff1660038111156108c6576108c5611ac7565b5b14610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612512565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561094857610947611ac7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561098657610985612089565b5b6040519080825280602002602001820160405280156109bf57816020015b6109ac6117c4565b8152602001906001900390816109a45790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2857610a27612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a96939291906128cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610af992919061291b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b509190612973565b8660010154610b5f91906129a4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610ba991906119a6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bdb989796959493929190612b04565b60206040518083038185885af1158015610bf9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c1e9190612ba7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610ca89493929190612bd4565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610cf790612036565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d7291906119a6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610da1959493929190612c6e565b60206040518083038185885af1158015610dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610de49190612ba7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e1b91906119a6565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612d35565b60405180910390fd5b60008282810190610ed09190611a8b565b90506000600660008381526020019081526020016000209050871580610ef4575086155b15610f7b578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f489190612973565b9081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5050506111cb565b60606000600167ffffffffffffffff811115610f9a57610f99612089565b5b604051908082528060200260200182016040528015610fd357816020015b610fc06117c4565b815260200190600190039081610fb85790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061103c5761103b612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110a793929190612e7c565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111269190612973565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016111829796959493929190612eee565b60206040518083038185885af11580156111a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111c59190612ba7565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612fec565b60405180910390fd5b8060030160009054906101000a900460ff16156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c49061307e565b60405180910390fd5b80600201544211156112f25781426112e59190612492565b816002018190555061130b565b8181600201546113029190612492565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161133a91906119a6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561139c5761139b611ac7565b5b8160020160009054906101000a900460ff1660038111156113c0576113bf611ac7565b5b14611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906130ea565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061317c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114d4576114d3611ac7565b5b021790555085858360050191826114ec9291906122c4565b5060005b84849050811015611568578260060185858381811061151257611511612532565b5b905060200281019061152491906131ab565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115599190613357565b505080806001019150506114f0565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161159891906119a6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061161661164f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116d35760008082815260200190815260200160002060030160009054906101000a900460ff166116c6576000808281526020019081526020016000206002015442116116c65760008082815260200190815260200160002060010154826116c39190612492565b91505b8080600101915050611655565b5060008111611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e906133b1565b60405180910390fd5b6000814461172591906133d1565b9050600080600090505b6001548110156117bd5760008082815260200190815260200160002060030160009054906101000a900460ff166117b0576000808281526020019081526020016000206002015442116117b057600080828152602001908152602001600020600101548261179d9190612492565b9150828211156117af578094506117bd565b5b808060010191505061172f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611823576118226117fe565b5b8235905067ffffffffffffffff8111156118405761183f611803565b5b60208301915083600182028301111561185c5761185b611808565b5b9250929050565b6000806020838503121561187a576118796117f4565b5b600083013567ffffffffffffffff811115611898576118976117f9565b5b6118a48582860161180d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118db826118b0565b9050919050565b6118eb816118d0565b81146118f657600080fd5b50565b600081359050611908816118e2565b92915050565b6000819050919050565b6119218161190e565b811461192c57600080fd5b50565b60008135905061193e81611918565b92915050565b60008060006060848603121561195d5761195c6117f4565b5b600061196b868287016118f9565b935050602061197c8682870161192f565b925050604061198d8682870161192f565b9150509250925092565b6119a08161190e565b82525050565b60006020820190506119bb6000830184611997565b92915050565b60008083601f8401126119d7576119d66117fe565b5b8235905067ffffffffffffffff8111156119f4576119f3611803565b5b602083019150836001820283011115611a1057611a0f611808565b5b9250929050565b60008060008060608587031215611a3157611a306117f4565b5b6000611a3f8782880161192f565b9450506020611a508782880161192f565b935050604085013567ffffffffffffffff811115611a7157611a706117f9565b5b611a7d878288016119c1565b925092505092959194509250565b600060208284031215611aa157611aa06117f4565b5b6000611aaf8482850161192f565b91505092915050565b611ac1816118d0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b0757611b06611ac7565b5b50565b6000819050611b1882611af6565b919050565b6000611b2882611b0a565b9050919050565b611b3881611b1d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b78578082015181840152602081019050611b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ba082611b3e565b611baa8185611b49565b9350611bba818560208601611b5a565b611bc381611b84565b840191505092915050565b60008115159050919050565b611be381611bce565b82525050565b600060e082019050611bfe600083018a611ab8565b611c0b6020830189611997565b611c186040830188611b2f565b611c256060830187611997565b8181036080830152611c378186611b95565b905081810360a0830152611c4b8185611b95565b9050611c5a60c0830184611bda565b98975050505050505050565b611c6f81611bce565b8114611c7a57600080fd5b50565b600081359050611c8c81611c66565b92915050565b60008060408385031215611ca957611ca86117f4565b5b6000611cb78582860161192f565b9250506020611cc885828601611c7d565b9150509250929050565b600081905082602060030282011115611cee57611ced611808565b5b92915050565b60008060008060a08587031215611d0e57611d0d6117f4565b5b6000611d1c8782880161192f565b945050602085013567ffffffffffffffff811115611d3d57611d3c6117f9565b5b611d498782880161180d565b93509350506040611d5c87828801611cd2565b91505092959194509250565b60008060008060008060a08789031215611d8557611d846117f4565b5b6000611d9389828a01611c7d565b9650506020611da489828a01611c7d565b9550506040611db589828a0161192f565b9450506060611dc689828a0161192f565b935050608087013567ffffffffffffffff811115611de757611de66117f9565b5b611df389828a016119c1565b92509250509295509295509295565b60008060408385031215611e1957611e186117f4565b5b6000611e278582860161192f565b9250506020611e388582860161192f565b9150509250929050565b6000604082019050611e576000830185611997565b611e646020830184611997565b9392505050565b60008083601f840112611e8157611e806117fe565b5b8235905067ffffffffffffffff811115611e9e57611e9d611803565b5b602083019150836020820283011115611eba57611eb9611808565b5b9250929050565b600080600080600060608688031215611edd57611edc6117f4565b5b6000611eeb8882890161192f565b955050602086013567ffffffffffffffff811115611f0c57611f0b6117f9565b5b611f188882890161180d565b9450945050604086013567ffffffffffffffff811115611f3b57611f3a6117f9565b5b611f4788828901611e6b565b92509250509295509295909350565b6000608082019050611f6b6000830187611ab8565b611f786020830186611997565b611f856040830185611997565b611f926060830184611bda565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611fd1601083611b49565b9150611fdc82611f9b565b602082019050919050565b6000602082019050818103600083015261200081611fc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120418261190e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361207357612072612007565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120ff57607f821691505b602082108103612112576121116120b8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261213d565b612184868361213d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121c16121bc6121b78461190e565b61219c565b61190e565b9050919050565b6000819050919050565b6121db836121a6565b6121ef6121e7826121c8565b84845461214a565b825550505050565b600090565b6122046121f7565b61220f8184846121d2565b505050565b5b81811015612233576122286000826121fc565b600181019050612215565b5050565b601f8211156122785761224981612118565b6122528461212d565b81016020851015612261578190505b61227561226d8561212d565b830182612214565b50505b505050565b600082821c905092915050565b600061229b6000198460080261227d565b1980831691505092915050565b60006122b4838361228a565b9150826002028217905092915050565b6122ce838361207e565b67ffffffffffffffff8111156122e7576122e6612089565b5b6122f182546120e7565b6122fc828285612237565b6000601f83116001811461232b5760008415612319578287013590505b61232385826122a8565b86555061238b565b601f19841661233986612118565b60005b828110156123615784890135825560018201915060208501945060208101905061233c565b8683101561237e578489013561237a601f89168261228a565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006123f0603683611b49565b91506123fb82612394565b604082019050919050565b6000602082019050818103600083015261241f816123e3565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061245c601183611b49565b915061246782612426565b602082019050919050565b6000602082019050818103600083015261248b8161244f565b9050919050565b600061249d8261190e565b91506124a88361190e565b92508282019050808211156124c0576124bf612007565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006124fc602083611b49565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125968161190e565b82525050565b6125a5816118d0565b82525050565b6040820160008201516125c1600085018261258d565b5060208201516125d4602085018261259c565b50505050565b60006125e683836125ab565b60408301905092915050565b6000602082019050919050565b600061260a82612561565b612614818561256c565b935061261f8361257d565b8060005b8381101561265057815161263788826125da565b9750612642836125f2565b925050600181019050612623565b5085935050505092915050565b6000815461266a816120e7565b6126748186611b49565b9450600182166000811461268f57600181146126a5576126d8565b60ff1983168652811515602002860193506126d8565b6126ae85612118565b60005b838110156126d0578154818901526001820191506020810190506126b1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061273c61273783612712565b61271f565b9050919050565b6000819050919050565b61275681612743565b82525050565b600082825260208201905092915050565b6000815461277a816120e7565b612784818661275c565b9450600182166000811461279f57600181146127b5576127e8565b60ff1983168652811515602002860193506127e8565b6127be85612118565b60005b838110156127e0578154818901526001820191506020810190506127c1565b808801955050505b50505092915050565b600060408301600080840154905061280881612729565b612815600087018261274d565b5060018401858303602087015261282c838261276d565b925050819250505092915050565b600061284683836127f1565b905092915050565b6000600282019050919050565b6000612866826126e1565b61287081856126ec565b935083602082028501612882856126fd565b8060005b858110156128bd5784840389528161289e858261283a565b94506128a98361284e565b925060208a01995050600181019050612886565b50829750879550505050505092915050565b600060608201905081810360008301526128e981866125ff565b905081810360208301526128fd818561265d565b90508181036040830152612911818461285b565b9050949350505050565b60006040820190506129306000830185611997565b61293d6020830184611bda565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297e8261190e565b91506129898361190e565b92508261299957612998612944565b5b828204905092915050565b60006129af8261190e565b91506129ba8361190e565b92508282039050818111156129d2576129d1612007565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a04838361258d565b60208301905092915050565b6000602082019050919050565b612a26816129d8565b612a3081846129e3565b9250612a3b826129ee565b8060005b83811015612a6c578151612a5387826129f8565b9650612a5e83612a10565b925050600181019050612a3f565b505050505050565b6000819050919050565b6000612a99612a94612a8f84612a74565b61219c565b61190e565b9050919050565b612aa981612a7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612ad682612aaf565b612ae08185612aba565b9350612af0818560208601611b5a565b612af981611b84565b840191505092915050565b6000610140820190508181036000830152612b1f818b61265d565b9050612b2e602083018a611997565b612b3b6040830189612a1d565b612b486080830188612a1d565b612b5560c0830187612aa0565b612b6260e0830186611bda565b612b70610100830185611bda565b818103610120830152612b838184612acb565b90509998505050505050505050565b600081519050612ba181611918565b92915050565b600060208284031215612bbd57612bbc6117f4565b5b6000612bcb84828501612b92565b91505092915050565b6000608082019050612be96000830187611997565b612bf66020830186611ab8565b612c036040830185611997565b612c106060830184611bda565b95945050505050565b82818337600083830152505050565b6000612c348385611b49565b9350612c41838584612c19565b612c4a83611b84565b840190509392505050565b82818337505050565b612c6a60608383612c55565b5050565b600060c0820190508181036000830152612c89818789612c28565b9050612c986020830186612c5e565b612ca56080830185611bda565b81810360a0830152612cb78184612acb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d1f603183611b49565b9150612d2a82612cc3565b604082019050919050565b60006020820190508181036000830152612d4e81612d12565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d7b82611b3e565b612d85818561275c565b9350612d95818560208601611b5a565b612d9e81611b84565b840191505092915050565b6000604083016000830151612dc1600086018261274d565b5060208301518482036020860152612dd98282612d70565b9150508091505092915050565b6000612df28383612da9565b905092915050565b6000602082019050919050565b6000612e1282612d55565b612e1c81856126ec565b935083602082028501612e2e85612d60565b8060005b85811015612e6a5784840389528151612e4b8582612de6565b9450612e5683612dfa565b925060208a01995050600181019050612e32565b50829750879550505050505092915050565b60006060820190508181036000830152612e9681866125ff565b90508181036020830152612eaa818561265d565b90508181036040830152612ebe8184612e07565b9050949350505050565b50565b6000612ed8600083612aba565b9150612ee382612ec8565b600082019050919050565b6000610140820190508181036000830152612f09818a61265d565b9050612f186020830189611997565b612f256040830188612a1d565b612f326080830187612a1d565b612f3f60c0830186612aa0565b612f4c60e0830185611bda565b612f5a610100830184611bda565b818103610120830152612f6c81612ecb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612fd6603383611b49565b9150612fe182612f7a565b604082019050919050565b6000602082019050818103600083015261300581612fc9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613068602483611b49565b91506130738261300c565b604082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130d4601883611b49565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613166603a83611b49565b91506131718261310a565b604082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131c7576131c661319c565b5b80830191505092915050565b6131dc81612743565b81146131e757600080fd5b50565b600081356131f7816131d3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61323984613200565b9350801983169250808416831791505092915050565b600061326a61326561326084612743565b61219c565b612743565b9050919050565b6000819050919050565b6132848261324f565b61329761329082613271565b835461320d565b8255505050565b600080833560016020038436030381126132bb576132ba61319c565b5b80840192508235915067ffffffffffffffff8211156132dd576132dc6131a1565b5b6020830192506001820236038313156132f9576132f86131a6565b5b509250929050565b61330c8383836122c4565b505050565b600081016000830180613323816131ea565b905061332f818461327b565b5050506001810160208301613344818561329e565b61334f818386613301565b505050505050565b6133618282613311565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b600061339b601a83611b49565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b60006133dc8261190e565b91506133e78361190e565b9250826133f7576133f6612944565b5b82820690509291505056fea26469706673582212206df67e317ebf3a0b98bea25a97e27222346d7b610a157599ac8e6f50387f2fc364736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Proposals.json b/backend/contractArtifacts/Proposals.json index 57cb228..2941653 100644 --- a/backend/contractArtifacts/Proposals.json +++ b/backend/contractArtifacts/Proposals.json @@ -213,13 +213,7 @@ } ], "name": "onValidate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [], "stateMutability": "nonpayable", "type": "function" }, @@ -343,8 +337,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b5060405162003544380380620035448339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b60805161308c620004b8600039600081816106fd015281816108e901528181610ae3015281816115490152611717015261308c6000f3fe60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610168578063cac152a414610191578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119f9565b610229565b6040516100bc99989796959493929190611bed565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119f9565b6103c1565b6040516100f99190611e6d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e89565b6106fa565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f5a565b6108e5565b60405161015f9190611ff4565b60405180910390f35b34801561017457600080fd5b5061018f600480360381019061018a91906119f9565b6111ba565b005b6101ab60048036038101906101a69190612087565b6112e6565b6040516101b89190611ff4565b60405180910390f35b3480156101cd57600080fd5b506101d66114b0565b6040516101e39190611ff4565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e91906119f9565b6114b6565b604051610220919061212e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612178565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612178565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612178565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b6103c961191a565b60008060008481526020019081526020016000209050806008016000600381106103f6576103f56121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156104c6578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610414565b50505050826000600381106104de576104dd6121a9565b5b6020020181905250806008016001600381106104fd576104fc6121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156105cd578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061051b565b50505050826001600381106105e5576105e46121a9565b5b602002018190525080600801600260038110610604576106036121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156106d4578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610622565b50505050826002600381106106ec576106eb6121a9565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161075491906121d8565b602060405180830381865afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107959190612208565b10156107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906122a7565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461084191906122f6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818160070160008282546108a2919061232a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108d89190611ff4565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906123d0565b60405180910390fd5b6000806000858581019061098991906123f0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109bd576109bc6121a9565b5b6011020190506000816001018260100154600381106109df576109de6121a9565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610adf5760048360050160006101000a81548160ff02191690836005811115610a7957610a78611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610aad919061248f565b60405180910390a183836002016000828254610ac9919061232a565b92505081905550600196505050505050506111b0565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612208565b8b8d610b7c919061232a565b6002610b8891906124bd565b1015905060016005811115610ba057610b9f611b06565b5b8460050160009054906101000a900460ff166005811115610bc457610bc3611b06565b5b03610ce55760008614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c039061254b565b60405180910390fd5b8d8015610c165750805b15610c4d5760028460050160006101000a81548160ff02191690836005811115610c4357610c42611b06565b5b0217905550610ce0565b6002836010015410610cc25760048460050160006101000a81548160ff02191690836005811115610c8157610c80611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610cb591906125b7565b60405180910390a1610cdf565b6001836010016000828254610cd7919061232a565b925050819055505b5b61108c565b60026005811115610cf957610cf8611b06565b5b8460050160009054906101000a900460ff166005811115610d1d57610d1c611b06565b5b03610e3e5760018614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612631565b60405180910390fd5b8d8015610d6f5750805b15610da65760038460050160006101000a81548160ff02191690836005811115610d9c57610d9b611b06565b5b0217905550610e39565b6002836010015410610e1b5760048460050160006101000a81548160ff02191690836005811115610dda57610dd9611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610e0e91906125b7565b60405180910390a1610e38565b6001836010016000828254610e30919061232a565b925050819055505b5b61108b565b60036005811115610e5257610e51611b06565b5b8460050160009054906101000a900460ff166005811115610e7657610e75611b06565b5b0361108a5760028614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061269d565b60405180910390fd5b8d8015610ec85750805b15610ff65760058460050160006101000a81548160ff02191690836005811115610ef557610ef4611b06565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f299190611ff4565b60405180910390a183603b0160009054906101000a900460ff1615610ff1578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b8152600401610fac93929190612756565b6020604051808303816000875af1158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190612208565b505b611089565b600283601001541061106b5760048460050160006101000a81548160ff0219169083600581111561102a57611029611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8760405161105e91906125b7565b60405180910390a1611088565b6001836010016000828254611080919061232a565b925050819055505b5b5b5b5b600160058111156110a05761109f611b06565b5b8460050160009054906101000a900460ff1660058111156110c4576110c3611b06565b5b036110ea576110e5876000600a87600101546110e091906127c3565b6116e2565b6111a4565b600260058111156110fe576110fd611b06565b5b8460050160009054906101000a900460ff16600581111561112257611121611b06565b5b0361114857611143876001600a876001015461113e91906127c3565b6116e2565b6111a3565b6003600581111561115c5761115b611b06565b5b8460050160009054906101000a900460ff1660058111156111805761117f611b06565b5b036111a2576111a1876002600a876001015461119c91906127c3565b6116e2565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156111e4576111e3611b06565b5b8160050160009054906101000a900460ff16600581111561120857611207611b06565b5b1480611248575060058081111561122257611221611b06565b5b8160050160009054906101000a900460ff16600581111561124657611245611b06565b5b145b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e9061288c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112e0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112fb906128ac565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261136d929190612ada565b504281600401819055508560006003811061138b5761138a6121a9565b5b6020020135816008016000600381106113a7576113a66121a9565b5b6011020160000181905550856001600381106113c6576113c56121a9565b5b6020020135816008016001600381106113e2576113e16121a9565b5b601102016000018190555085600260038110611401576114006121a9565b5b60200201358160080160026003811061141d5761141c6121a9565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261146d929190612bfb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161149d9190611ff4565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114e1576114e0611b06565b5b8160050160009054906101000a900460ff16600581111561150557611504611b06565b5b14611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612d3d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190612208565b8260070154600a6115e791906124bd565b1015905060006301e133808360040154611601919061232a565b421190508161168c5780156116805760048360050160006101000a81548160ff0219169083600581111561163857611637611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161166c9190612dcf565b60405180910390a1600093505050506116dd565b600093505050506116dd565b60018360050160006101000a81548160ff021916908360058111156116b4576116b3611b06565b5b02179055506116d5856000600a86600101546116d091906127c3565b6116e2565b600193505050505b919050565b600080600085815260200190815260200160002090508181600201600082825461170c91906122f6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061176c5761176b6121a9565b5b601102016000015460068960038110611788576117876121a9565b5b60020201600c8a600381106117a05761179f6121a9565b5b6002020160028b600381106117b8576117b76121a9565b5b015460058c600381106117ce576117cd6121a9565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117fb93929190612dfd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161182d989796959493929190612f9f565b60206040518083038185885af115801561184b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118709190612208565b9050600082600801856003811061188a576118896121a9565b5b6011020190506000816001018260100154600381106118ac576118ab6121a9565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c673479878460405161190992919061302d565b60405180910390a150505050505050565b60405180606001604052806003905b611931611947565b8152602001906001900390816119295790505090565b60405180606001604052806003905b61195e611974565b8152602001906001900390816119565790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119d6816119c3565b81146119e157600080fd5b50565b6000813590506119f3816119cd565b92915050565b600060208284031215611a0f57611a0e6119b9565b5b6000611a1d848285016119e4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a5182611a26565b9050919050565b611a6181611a46565b82525050565b611a70816119c3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ab0578082015181840152602081019050611a95565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ad882611a76565b611ae28185611a81565b9350611af2818560208601611a92565b611afb81611abc565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b4657611b45611b06565b5b50565b6000819050611b5782611b35565b919050565b6000611b6782611b49565b9050919050565b611b7781611b5c565b82525050565b60008115159050919050565b611b9281611b7d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611bbf82611b98565b611bc98185611ba3565b9350611bd9818560208601611a92565b611be281611abc565b840191505092915050565b600061012082019050611c03600083018c611a58565b611c10602083018b611a67565b611c1d604083018a611a67565b8181036060830152611c2f8189611acd565b9050611c3e6080830188611a67565b611c4b60a0830187611b6e565b611c5860c0830186611a67565b611c6560e0830185611b89565b818103610100830152611c788184611bb4565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cd1816119c3565b82525050565b611ce081611b7d565b82525050565b60e082016000820151611cfc6000850182611cc8565b506020820151611d0f6020850182611cd7565b506040820151611d226040850182611cd7565b506060820151611d356060850182611cc8565b506080820151611d486080850182611cc8565b5060a0820151611d5b60a0850182611cd7565b5060c0820151611d6e60c0850182611cd7565b50505050565b6000611d808383611ce6565b60e08301905092915050565b6000602082019050919050565b611da281611ca8565b611dac8184611cb3565b9250611db782611cbe565b8060005b83811015611de8578151611dcf8782611d74565b9650611dda83611d8c565b925050600181019050611dbb565b505050505050565b6000611dfc8383611d99565b6102a08301905092915050565b6000602082019050919050565b611e1f81611c88565b611e298184611c93565b9250611e3482611c9e565b8060005b83811015611e65578151611e4c8782611df0565b9650611e5783611e09565b925050600181019050611e38565b505050505050565b60006107e082019050611e836000830184611e16565b92915050565b60008060408385031215611ea057611e9f6119b9565b5b6000611eae858286016119e4565b9250506020611ebf858286016119e4565b9150509250929050565b611ed281611b7d565b8114611edd57600080fd5b50565b600081359050611eef81611ec9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f1a57611f19611ef5565b5b8235905067ffffffffffffffff811115611f3757611f36611efa565b5b602083019150836001820283011115611f5357611f52611eff565b5b9250929050565b60008060008060008060a08789031215611f7757611f766119b9565b5b6000611f8589828a01611ee0565b9650506020611f9689828a01611ee0565b9550506040611fa789828a016119e4565b9450506060611fb889828a016119e4565b935050608087013567ffffffffffffffff811115611fd957611fd86119be565b5b611fe589828a01611f04565b92509250509295509295509295565b60006020820190506120096000830184611a67565b92915050565b60008083601f84011261202557612024611ef5565b5b8235905067ffffffffffffffff81111561204257612041611efa565b5b60208301915083600182028301111561205e5761205d611eff565b5b9250929050565b60008190508260206003028201111561208157612080611eff565b5b92915050565b60008060008060008060c087890312156120a4576120a36119b9565b5b600087013567ffffffffffffffff8111156120c2576120c16119be565b5b6120ce89828a0161200f565b965096505060206120e189828a01612065565b94505060806120f289828a01611ee0565b93505060a087013567ffffffffffffffff811115612113576121126119be565b5b61211f89828a01611f04565b92509250509295509295509295565b60006020820190506121436000830184611b89565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061219057607f821691505b6020821081036121a3576121a2612149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121ed6000830184611a58565b92915050565b600081519050612202816119cd565b92915050565b60006020828403121561221e5761221d6119b9565b5b600061222c848285016121f3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612291602383611a81565b915061229c82612235565b604082019050919050565b600060208201905081810360008301526122c081612284565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612301826119c3565b915061230c836119c3565b9250828203905081811115612324576123236122c7565b5b92915050565b6000612335826119c3565b9150612340836119c3565b9250828201905080821115612358576123576122c7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b60006123ba603183611a81565b91506123c58261235e565b604082019050919050565b600060208201905081810360008301526123e9816123ad565b9050919050565b600080600060608486031215612409576124086119b9565b5b6000612417868287016119e4565b9350506020612428868287016119e4565b9250506040612439868287016119e4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612479600e83611a81565b915061248482612443565b602082019050919050565b60006040820190506124a46000830184611a67565b81810360208301526124b58161246c565b905092915050565b60006124c8826119c3565b91506124d3836119c3565b92508282026124e1816119c3565b915082820484148315176124f8576124f76122c7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612535601683611a81565b9150612540826124ff565b602082019050919050565b6000602082019050818103600083015261256481612528565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b60006125a1601483611a81565b91506125ac8261256b565b602082019050919050565b60006040820190506125cc6000830184611a67565b81810360208301526125dd81612594565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b600061261b601683611a81565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612687601683611a81565b915061269282612651565b602082019050919050565b600060208201905081810360008301526126b68161267a565b9050919050565b60008190508160005260206000209050919050565b600081546126df81612178565b6126e98186611ba3565b94506001821660008114612704576001811461271a5761274d565b60ff19831686528115156020028601935061274d565b612723856126bd565b60005b8381101561274557815481890152600182019150602081019050612726565b808801955050505b50505092915050565b600060608201905061276b6000830186611a67565b6127786020830185611a67565b818103604083015261278a81846126d2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ce826119c3565b91506127d9836119c3565b9250826127e9576127e8612794565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612876604e83611a81565b9150612881826127f4565b606082019050919050565b600060208201905081810360008301526128a581612869565b9050919050565b60006128b7826119c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e9576128e86122c7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612953565b61299a8683612953565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129d76129d26129cd846119c3565b6129b2565b6119c3565b9050919050565b6000819050919050565b6129f1836129bc565b612a056129fd826129de565b848454612960565b825550505050565b600090565b612a1a612a0d565b612a258184846129e8565b505050565b5b81811015612a4957612a3e600082612a12565b600181019050612a2b565b5050565b601f821115612a8e57612a5f8161292e565b612a6884612943565b81016020851015612a77578190505b612a8b612a8385612943565b830182612a2a565b50505b505050565b600082821c905092915050565b6000612ab160001984600802612a93565b1980831691505092915050565b6000612aca8383612aa0565b9150826002028217905092915050565b612ae483836128f4565b67ffffffffffffffff811115612afd57612afc6128ff565b5b612b078254612178565b612b12828285612a4d565b6000601f831160018114612b415760008415612b2f578287013590505b612b398582612abe565b865550612ba1565b601f198416612b4f8661292e565b60005b82811015612b7757848901358255600182019150602085019450602081019050612b52565b86831015612b945784890135612b90601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bf657612bc7816126bd565b612bd084612943565b81016020851015612bdf578190505b612bf3612beb85612943565b830182612a2a565b50505b505050565b612c058383612baa565b67ffffffffffffffff811115612c1e57612c1d6128ff565b5b612c288254612178565b612c33828285612bb5565b6000601f831160018114612c625760008415612c50578287013590505b612c5a8582612abe565b865550612cc2565b601f198416612c70866126bd565b60005b82811015612c9857848901358255600182019150602085019450602081019050612c73565b86831015612cb55784890135612cb1601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d27602b83611a81565b9150612d3282612ccb565b604082019050919050565b60006020820190508181036000830152612d5681612d1a565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612db9602d83611a81565b9150612dc482612d5d565b604082019050919050565b6000604082019050612de46000830184611a67565b8181036020830152612df581612dac565b905092915050565b6000606082019050612e126000830186611a67565b612e1f6020830185611a67565b612e2c6040830184611a67565b949350505050565b60008154612e4181612178565b612e4b8186611a81565b94506001821660008114612e665760018114612e7c57612eaf565b60ff198316865281151560200286019350612eaf565b612e858561292e565b60005b83811015612ea757815481890152600182019150602081019050612e88565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ee48383611cc8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612f1a612f1583612ef0565b612efd565b9050919050565b6000612f2d8254612f07565b9050919050565b6000600182019050919050565b612f4a81612eb8565b612f548184612ec3565b9250612f5f82612ece565b8060005b83811015612f9757612f7482612f21565b612f7e8782612ed8565b9650612f8983612f34565b925050600181019050612f63565b505050505050565b6000610140820190508181036000830152612fba818b612e34565b9050612fc9602083018a611a67565b612fd66040830189612f41565b612fe36080830188612f41565b612ff060c0830187611a67565b612ffd60e0830186611b89565b61300b610100830185611b89565b81810361012083015261301e8184611bb4565b90509998505050505050505050565b60006040820190506130426000830185611a67565b61304f6020830184611a67565b939250505056fea26469706673582212205ede6b9d00263a10613de5a0d6cbaa2c3e3b424223bf9d31d5ede9f5da49995d64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610168578063cac152a414610191578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119f9565b610229565b6040516100bc99989796959493929190611bed565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119f9565b6103c1565b6040516100f99190611e6d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e89565b6106fa565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f5a565b6108e5565b60405161015f9190611ff4565b60405180910390f35b34801561017457600080fd5b5061018f600480360381019061018a91906119f9565b6111ba565b005b6101ab60048036038101906101a69190612087565b6112e6565b6040516101b89190611ff4565b60405180910390f35b3480156101cd57600080fd5b506101d66114b0565b6040516101e39190611ff4565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e91906119f9565b6114b6565b604051610220919061212e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612178565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612178565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612178565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b6103c961191a565b60008060008481526020019081526020016000209050806008016000600381106103f6576103f56121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156104c6578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610414565b50505050826000600381106104de576104dd6121a9565b5b6020020181905250806008016001600381106104fd576104fc6121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156105cd578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061051b565b50505050826001600381106105e5576105e46121a9565b5b602002018190525080600801600260038110610604576106036121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156106d4578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610622565b50505050826002600381106106ec576106eb6121a9565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161075491906121d8565b602060405180830381865afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107959190612208565b10156107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906122a7565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461084191906122f6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818160070160008282546108a2919061232a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108d89190611ff4565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906123d0565b60405180910390fd5b6000806000858581019061098991906123f0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109bd576109bc6121a9565b5b6011020190506000816001018260100154600381106109df576109de6121a9565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610adf5760048360050160006101000a81548160ff02191690836005811115610a7957610a78611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610aad919061248f565b60405180910390a183836002016000828254610ac9919061232a565b92505081905550600196505050505050506111b0565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612208565b8b8d610b7c919061232a565b6002610b8891906124bd565b1015905060016005811115610ba057610b9f611b06565b5b8460050160009054906101000a900460ff166005811115610bc457610bc3611b06565b5b03610ce55760008614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c039061254b565b60405180910390fd5b8d8015610c165750805b15610c4d5760028460050160006101000a81548160ff02191690836005811115610c4357610c42611b06565b5b0217905550610ce0565b6002836010015410610cc25760048460050160006101000a81548160ff02191690836005811115610c8157610c80611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610cb591906125b7565b60405180910390a1610cdf565b6001836010016000828254610cd7919061232a565b925050819055505b5b61108c565b60026005811115610cf957610cf8611b06565b5b8460050160009054906101000a900460ff166005811115610d1d57610d1c611b06565b5b03610e3e5760018614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612631565b60405180910390fd5b8d8015610d6f5750805b15610da65760038460050160006101000a81548160ff02191690836005811115610d9c57610d9b611b06565b5b0217905550610e39565b6002836010015410610e1b5760048460050160006101000a81548160ff02191690836005811115610dda57610dd9611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610e0e91906125b7565b60405180910390a1610e38565b6001836010016000828254610e30919061232a565b925050819055505b5b61108b565b60036005811115610e5257610e51611b06565b5b8460050160009054906101000a900460ff166005811115610e7657610e75611b06565b5b0361108a5760028614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061269d565b60405180910390fd5b8d8015610ec85750805b15610ff65760058460050160006101000a81548160ff02191690836005811115610ef557610ef4611b06565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f299190611ff4565b60405180910390a183603b0160009054906101000a900460ff1615610ff1578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b8152600401610fac93929190612756565b6020604051808303816000875af1158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190612208565b505b611089565b600283601001541061106b5760048460050160006101000a81548160ff0219169083600581111561102a57611029611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8760405161105e91906125b7565b60405180910390a1611088565b6001836010016000828254611080919061232a565b925050819055505b5b5b5b5b600160058111156110a05761109f611b06565b5b8460050160009054906101000a900460ff1660058111156110c4576110c3611b06565b5b036110ea576110e5876000600a87600101546110e091906127c3565b6116e2565b6111a4565b600260058111156110fe576110fd611b06565b5b8460050160009054906101000a900460ff16600581111561112257611121611b06565b5b0361114857611143876001600a876001015461113e91906127c3565b6116e2565b6111a3565b6003600581111561115c5761115b611b06565b5b8460050160009054906101000a900460ff1660058111156111805761117f611b06565b5b036111a2576111a1876002600a876001015461119c91906127c3565b6116e2565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156111e4576111e3611b06565b5b8160050160009054906101000a900460ff16600581111561120857611207611b06565b5b1480611248575060058081111561122257611221611b06565b5b8160050160009054906101000a900460ff16600581111561124657611245611b06565b5b145b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e9061288c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112e0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112fb906128ac565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261136d929190612ada565b504281600401819055508560006003811061138b5761138a6121a9565b5b6020020135816008016000600381106113a7576113a66121a9565b5b6011020160000181905550856001600381106113c6576113c56121a9565b5b6020020135816008016001600381106113e2576113e16121a9565b5b601102016000018190555085600260038110611401576114006121a9565b5b60200201358160080160026003811061141d5761141c6121a9565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261146d929190612bfb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161149d9190611ff4565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114e1576114e0611b06565b5b8160050160009054906101000a900460ff16600581111561150557611504611b06565b5b14611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612d3d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190612208565b8260070154600a6115e791906124bd565b1015905060006301e133808360040154611601919061232a565b421190508161168c5780156116805760048360050160006101000a81548160ff0219169083600581111561163857611637611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161166c9190612dcf565b60405180910390a1600093505050506116dd565b600093505050506116dd565b60018360050160006101000a81548160ff021916908360058111156116b4576116b3611b06565b5b02179055506116d5856000600a86600101546116d091906127c3565b6116e2565b600193505050505b919050565b600080600085815260200190815260200160002090508181600201600082825461170c91906122f6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061176c5761176b6121a9565b5b601102016000015460068960038110611788576117876121a9565b5b60020201600c8a600381106117a05761179f6121a9565b5b6002020160028b600381106117b8576117b76121a9565b5b015460058c600381106117ce576117cd6121a9565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117fb93929190612dfd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161182d989796959493929190612f9f565b60206040518083038185885af115801561184b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118709190612208565b9050600082600801856003811061188a576118896121a9565b5b6011020190506000816001018260100154600381106118ac576118ab6121a9565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c673479878460405161190992919061302d565b60405180910390a150505050505050565b60405180606001604052806003905b611931611947565b8152602001906001900390816119295790505090565b60405180606001604052806003905b61195e611974565b8152602001906001900390816119565790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119d6816119c3565b81146119e157600080fd5b50565b6000813590506119f3816119cd565b92915050565b600060208284031215611a0f57611a0e6119b9565b5b6000611a1d848285016119e4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a5182611a26565b9050919050565b611a6181611a46565b82525050565b611a70816119c3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ab0578082015181840152602081019050611a95565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ad882611a76565b611ae28185611a81565b9350611af2818560208601611a92565b611afb81611abc565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b4657611b45611b06565b5b50565b6000819050611b5782611b35565b919050565b6000611b6782611b49565b9050919050565b611b7781611b5c565b82525050565b60008115159050919050565b611b9281611b7d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611bbf82611b98565b611bc98185611ba3565b9350611bd9818560208601611a92565b611be281611abc565b840191505092915050565b600061012082019050611c03600083018c611a58565b611c10602083018b611a67565b611c1d604083018a611a67565b8181036060830152611c2f8189611acd565b9050611c3e6080830188611a67565b611c4b60a0830187611b6e565b611c5860c0830186611a67565b611c6560e0830185611b89565b818103610100830152611c788184611bb4565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cd1816119c3565b82525050565b611ce081611b7d565b82525050565b60e082016000820151611cfc6000850182611cc8565b506020820151611d0f6020850182611cd7565b506040820151611d226040850182611cd7565b506060820151611d356060850182611cc8565b506080820151611d486080850182611cc8565b5060a0820151611d5b60a0850182611cd7565b5060c0820151611d6e60c0850182611cd7565b50505050565b6000611d808383611ce6565b60e08301905092915050565b6000602082019050919050565b611da281611ca8565b611dac8184611cb3565b9250611db782611cbe565b8060005b83811015611de8578151611dcf8782611d74565b9650611dda83611d8c565b925050600181019050611dbb565b505050505050565b6000611dfc8383611d99565b6102a08301905092915050565b6000602082019050919050565b611e1f81611c88565b611e298184611c93565b9250611e3482611c9e565b8060005b83811015611e65578151611e4c8782611df0565b9650611e5783611e09565b925050600181019050611e38565b505050505050565b60006107e082019050611e836000830184611e16565b92915050565b60008060408385031215611ea057611e9f6119b9565b5b6000611eae858286016119e4565b9250506020611ebf858286016119e4565b9150509250929050565b611ed281611b7d565b8114611edd57600080fd5b50565b600081359050611eef81611ec9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f1a57611f19611ef5565b5b8235905067ffffffffffffffff811115611f3757611f36611efa565b5b602083019150836001820283011115611f5357611f52611eff565b5b9250929050565b60008060008060008060a08789031215611f7757611f766119b9565b5b6000611f8589828a01611ee0565b9650506020611f9689828a01611ee0565b9550506040611fa789828a016119e4565b9450506060611fb889828a016119e4565b935050608087013567ffffffffffffffff811115611fd957611fd86119be565b5b611fe589828a01611f04565b92509250509295509295509295565b60006020820190506120096000830184611a67565b92915050565b60008083601f84011261202557612024611ef5565b5b8235905067ffffffffffffffff81111561204257612041611efa565b5b60208301915083600182028301111561205e5761205d611eff565b5b9250929050565b60008190508260206003028201111561208157612080611eff565b5b92915050565b60008060008060008060c087890312156120a4576120a36119b9565b5b600087013567ffffffffffffffff8111156120c2576120c16119be565b5b6120ce89828a0161200f565b965096505060206120e189828a01612065565b94505060806120f289828a01611ee0565b93505060a087013567ffffffffffffffff811115612113576121126119be565b5b61211f89828a01611f04565b92509250509295509295509295565b60006020820190506121436000830184611b89565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061219057607f821691505b6020821081036121a3576121a2612149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121ed6000830184611a58565b92915050565b600081519050612202816119cd565b92915050565b60006020828403121561221e5761221d6119b9565b5b600061222c848285016121f3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612291602383611a81565b915061229c82612235565b604082019050919050565b600060208201905081810360008301526122c081612284565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612301826119c3565b915061230c836119c3565b9250828203905081811115612324576123236122c7565b5b92915050565b6000612335826119c3565b9150612340836119c3565b9250828201905080821115612358576123576122c7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b60006123ba603183611a81565b91506123c58261235e565b604082019050919050565b600060208201905081810360008301526123e9816123ad565b9050919050565b600080600060608486031215612409576124086119b9565b5b6000612417868287016119e4565b9350506020612428868287016119e4565b9250506040612439868287016119e4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612479600e83611a81565b915061248482612443565b602082019050919050565b60006040820190506124a46000830184611a67565b81810360208301526124b58161246c565b905092915050565b60006124c8826119c3565b91506124d3836119c3565b92508282026124e1816119c3565b915082820484148315176124f8576124f76122c7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612535601683611a81565b9150612540826124ff565b602082019050919050565b6000602082019050818103600083015261256481612528565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b60006125a1601483611a81565b91506125ac8261256b565b602082019050919050565b60006040820190506125cc6000830184611a67565b81810360208301526125dd81612594565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b600061261b601683611a81565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612687601683611a81565b915061269282612651565b602082019050919050565b600060208201905081810360008301526126b68161267a565b9050919050565b60008190508160005260206000209050919050565b600081546126df81612178565b6126e98186611ba3565b94506001821660008114612704576001811461271a5761274d565b60ff19831686528115156020028601935061274d565b612723856126bd565b60005b8381101561274557815481890152600182019150602081019050612726565b808801955050505b50505092915050565b600060608201905061276b6000830186611a67565b6127786020830185611a67565b818103604083015261278a81846126d2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ce826119c3565b91506127d9836119c3565b9250826127e9576127e8612794565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612876604e83611a81565b9150612881826127f4565b606082019050919050565b600060208201905081810360008301526128a581612869565b9050919050565b60006128b7826119c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e9576128e86122c7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612953565b61299a8683612953565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129d76129d26129cd846119c3565b6129b2565b6119c3565b9050919050565b6000819050919050565b6129f1836129bc565b612a056129fd826129de565b848454612960565b825550505050565b600090565b612a1a612a0d565b612a258184846129e8565b505050565b5b81811015612a4957612a3e600082612a12565b600181019050612a2b565b5050565b601f821115612a8e57612a5f8161292e565b612a6884612943565b81016020851015612a77578190505b612a8b612a8385612943565b830182612a2a565b50505b505050565b600082821c905092915050565b6000612ab160001984600802612a93565b1980831691505092915050565b6000612aca8383612aa0565b9150826002028217905092915050565b612ae483836128f4565b67ffffffffffffffff811115612afd57612afc6128ff565b5b612b078254612178565b612b12828285612a4d565b6000601f831160018114612b415760008415612b2f578287013590505b612b398582612abe565b865550612ba1565b601f198416612b4f8661292e565b60005b82811015612b7757848901358255600182019150602085019450602081019050612b52565b86831015612b945784890135612b90601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bf657612bc7816126bd565b612bd084612943565b81016020851015612bdf578190505b612bf3612beb85612943565b830182612a2a565b50505b505050565b612c058383612baa565b67ffffffffffffffff811115612c1e57612c1d6128ff565b5b612c288254612178565b612c33828285612bb5565b6000601f831160018114612c625760008415612c50578287013590505b612c5a8582612abe565b865550612cc2565b601f198416612c70866126bd565b60005b82811015612c9857848901358255600182019150602085019450602081019050612c73565b86831015612cb55784890135612cb1601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d27602b83611a81565b9150612d3282612ccb565b604082019050919050565b60006020820190508181036000830152612d5681612d1a565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612db9602d83611a81565b9150612dc482612d5d565b604082019050919050565b6000604082019050612de46000830184611a67565b8181036020830152612df581612dac565b905092915050565b6000606082019050612e126000830186611a67565b612e1f6020830185611a67565b612e2c6040830184611a67565b949350505050565b60008154612e4181612178565b612e4b8186611a81565b94506001821660008114612e665760018114612e7c57612eaf565b60ff198316865281151560200286019350612eaf565b612e858561292e565b60005b83811015612ea757815481890152600182019150602081019050612e88565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ee48383611cc8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612f1a612f1583612ef0565b612efd565b9050919050565b6000612f2d8254612f07565b9050919050565b6000600182019050919050565b612f4a81612eb8565b612f548184612ec3565b9250612f5f82612ece565b8060005b83811015612f9757612f7482612f21565b612f7e8782612ed8565b9650612f8983612f34565b925050600181019050612f63565b505050505050565b6000610140820190508181036000830152612fba818b612e34565b9050612fc9602083018a611a67565b612fd66040830189612f41565b612fe36080830188612f41565b612ff060c0830187611a67565b612ffd60e0830186611b89565b61300b610100830185611b89565b81810361012083015261301e8184611bb4565b90509998505050505050505050565b60006040820190506130426000830185611a67565b61304f6020830184611a67565b939250505056fea26469706673582212205ede6b9d00263a10613de5a0d6cbaa2c3e3b424223bf9d31d5ede9f5da49995d64736f6c63430008180033", + "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b5060405162003524380380620035248339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b60805161306c620004b8600039600081816106e9015281816108d301528181610ac90152818161152901526116f7015261306c6000f3fe60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610154578063cac152a41461017d578063da35c664146101ad578063ea923e63146101d85761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119d9565b610215565b6040516100bc99989796959493929190611bcd565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119d9565b6103ad565b6040516100f99190611e4d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e69565b6106e6565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f3a565b6108d1565b005b34801561016057600080fd5b5061017b600480360381019061017691906119d9565b61119a565b005b6101976004803603810190610192919061204c565b6112c6565b6040516101a491906120f3565b60405180910390f35b3480156101b957600080fd5b506101c2611490565b6040516101cf91906120f3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa91906119d9565b611496565b60405161020c919061210e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461026a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461029690612158565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461032a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461035690612158565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905089565b6103b56118fa565b60008060008481526020019081526020016000209050806008016000600381106103e2576103e1612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156104b2578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610400565b50505050826000600381106104ca576104c9612189565b5b6020020181905250806008016001600381106104e9576104e8612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156105b9578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610507565b50505050826001600381106105d1576105d0612189565b5b6020020181905250806008016002600381106105f0576105ef612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156106c0578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061060e565b50505050826002600381106106d8576106d7612189565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161074091906121b8565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906121e8565b10156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990612287565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461082d91906122d6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181600701600082825461088e919061230a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108c491906120f3565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610956906123b0565b60405180910390fd5b6000806000848481019061097391906123d0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109a7576109a6612189565b5b6011020190506000816001018260100154600381106109c9576109c8612189565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508981600201819055508881600301819055508a8160040160016101000a81548160ff0219169083151502179055508b8160040160006101000a81548160ff0219169083151502179055508a610ac55760048360050160006101000a81548160ff02191690836005811115610a6357610a62611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610a97919061246f565b60405180910390a183836002016000828254610ab3919061230a565b92505081905550505050505050611192565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5691906121e8565b8a8c610b62919061230a565b6002610b6e919061249d565b1015905060016005811115610b8657610b85611ae6565b5b8460050160009054906101000a900460ff166005811115610baa57610ba9611ae6565b5b03610ccb5760008614610bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be99061252b565b60405180910390fd5b8c8015610bfc5750805b15610c335760028460050160006101000a81548160ff02191690836005811115610c2957610c28611ae6565b5b0217905550610cc6565b6002836010015410610ca85760048460050160006101000a81548160ff02191690836005811115610c6757610c66611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610c9b9190612597565b60405180910390a1610cc5565b6001836010016000828254610cbd919061230a565b925050819055505b5b611072565b60026005811115610cdf57610cde611ae6565b5b8460050160009054906101000a900460ff166005811115610d0357610d02611ae6565b5b03610e245760018614610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612611565b60405180910390fd5b8c8015610d555750805b15610d8c5760038460050160006101000a81548160ff02191690836005811115610d8257610d81611ae6565b5b0217905550610e1f565b6002836010015410610e015760048460050160006101000a81548160ff02191690836005811115610dc057610dbf611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610df49190612597565b60405180910390a1610e1e565b6001836010016000828254610e16919061230a565b925050819055505b5b611071565b60036005811115610e3857610e37611ae6565b5b8460050160009054906101000a900460ff166005811115610e5c57610e5b611ae6565b5b036110705760028614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061267d565b60405180910390fd5b8c8015610eae5750805b15610fdc5760058460050160006101000a81548160ff02191690836005811115610edb57610eda611ae6565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f0f91906120f3565b60405180910390a183603b0160009054906101000a900460ff1615610fd7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728c8c87603c016040518463ffffffff1660e01b8152600401610f9293929190612736565b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906121e8565b505b61106f565b60028360100154106110515760048460050160006101000a81548160ff021916908360058111156110105761100f611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516110449190612597565b60405180910390a161106e565b6001836010016000828254611066919061230a565b925050819055505b5b5b5b5b6001600581111561108657611085611ae6565b5b8460050160009054906101000a900460ff1660058111156110aa576110a9611ae6565b5b036110d0576110cb876000600a87600101546110c691906127a3565b6116c2565b61118a565b600260058111156110e4576110e3611ae6565b5b8460050160009054906101000a900460ff16600581111561110857611107611ae6565b5b0361112e57611129876001600a876001015461112491906127a3565b6116c2565b611189565b6003600581111561114257611141611ae6565b5b8460050160009054906101000a900460ff16600581111561116657611165611ae6565b5b0361118857611187876002600a876001015461118291906127a3565b6116c2565b5b5b5b505050505050505b505050505050565b60008060008381526020019081526020016000209050600460058111156111c4576111c3611ae6565b5b8160050160009054906101000a900460ff1660058111156111e8576111e7611ae6565b5b1480611228575060058081111561120257611201611ae6565b5b8160050160009054906101000a900460ff16600581111561122657611225611ae6565b5b145b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061286c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112c0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112db9061288c565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261134d929190612aba565b504281600401819055508560006003811061136b5761136a612189565b5b60200201358160080160006003811061138757611386612189565b5b6011020160000181905550856001600381106113a6576113a5612189565b5b6020020135816008016001600381106113c2576113c1612189565b5b6011020160000181905550856002600381106113e1576113e0612189565b5b6020020135816008016002600381106113fd576113fc612189565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261144d929190612bdb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161147d91906120f3565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114c1576114c0611ae6565b5b8160050160009054906101000a900460ff1660058111156114e5576114e4611ae6565b5b14611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612d1d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b691906121e8565b8260070154600a6115c7919061249d565b1015905060006301e1338083600401546115e1919061230a565b421190508161166c5780156116605760048360050160006101000a81548160ff0219169083600581111561161857611617611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161164c9190612daf565b60405180910390a1600093505050506116bd565b600093505050506116bd565b60018360050160006101000a81548160ff0219169083600581111561169457611693611ae6565b5b02179055506116b5856000600a86600101546116b091906127a3565b6116c2565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546116ec91906122d6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061174c5761174b612189565b5b60110201600001546006896003811061176857611767612189565b5b60020201600c8a600381106117805761177f612189565b5b6002020160028b6003811061179857611797612189565b5b015460058c600381106117ae576117ad612189565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117db93929190612ddd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161180d989796959493929190612f7f565b60206040518083038185885af115801561182b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061185091906121e8565b9050600082600801856003811061186a57611869612189565b5b60110201905060008160010182601001546003811061188c5761188b612189565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c67347987846040516118e992919061300d565b60405180910390a150505050505050565b60405180606001604052806003905b611911611927565b8152602001906001900390816119095790505090565b60405180606001604052806003905b61193e611954565b8152602001906001900390816119365790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119b6816119a3565b81146119c157600080fd5b50565b6000813590506119d3816119ad565b92915050565b6000602082840312156119ef576119ee611999565b5b60006119fd848285016119c4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3182611a06565b9050919050565b611a4181611a26565b82525050565b611a50816119a3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a90578082015181840152602081019050611a75565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab882611a56565b611ac28185611a61565b9350611ad2818560208601611a72565b611adb81611a9c565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b2657611b25611ae6565b5b50565b6000819050611b3782611b15565b919050565b6000611b4782611b29565b9050919050565b611b5781611b3c565b82525050565b60008115159050919050565b611b7281611b5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611b9f82611b78565b611ba98185611b83565b9350611bb9818560208601611a72565b611bc281611a9c565b840191505092915050565b600061012082019050611be3600083018c611a38565b611bf0602083018b611a47565b611bfd604083018a611a47565b8181036060830152611c0f8189611aad565b9050611c1e6080830188611a47565b611c2b60a0830187611b4e565b611c3860c0830186611a47565b611c4560e0830185611b69565b818103610100830152611c588184611b94565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cb1816119a3565b82525050565b611cc081611b5d565b82525050565b60e082016000820151611cdc6000850182611ca8565b506020820151611cef6020850182611cb7565b506040820151611d026040850182611cb7565b506060820151611d156060850182611ca8565b506080820151611d286080850182611ca8565b5060a0820151611d3b60a0850182611cb7565b5060c0820151611d4e60c0850182611cb7565b50505050565b6000611d608383611cc6565b60e08301905092915050565b6000602082019050919050565b611d8281611c88565b611d8c8184611c93565b9250611d9782611c9e565b8060005b83811015611dc8578151611daf8782611d54565b9650611dba83611d6c565b925050600181019050611d9b565b505050505050565b6000611ddc8383611d79565b6102a08301905092915050565b6000602082019050919050565b611dff81611c68565b611e098184611c73565b9250611e1482611c7e565b8060005b83811015611e45578151611e2c8782611dd0565b9650611e3783611de9565b925050600181019050611e18565b505050505050565b60006107e082019050611e636000830184611df6565b92915050565b60008060408385031215611e8057611e7f611999565b5b6000611e8e858286016119c4565b9250506020611e9f858286016119c4565b9150509250929050565b611eb281611b5d565b8114611ebd57600080fd5b50565b600081359050611ecf81611ea9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611efa57611ef9611ed5565b5b8235905067ffffffffffffffff811115611f1757611f16611eda565b5b602083019150836001820283011115611f3357611f32611edf565b5b9250929050565b60008060008060008060a08789031215611f5757611f56611999565b5b6000611f6589828a01611ec0565b9650506020611f7689828a01611ec0565b9550506040611f8789828a016119c4565b9450506060611f9889828a016119c4565b935050608087013567ffffffffffffffff811115611fb957611fb861199e565b5b611fc589828a01611ee4565b92509250509295509295509295565b60008083601f840112611fea57611fe9611ed5565b5b8235905067ffffffffffffffff81111561200757612006611eda565b5b60208301915083600182028301111561202357612022611edf565b5b9250929050565b60008190508260206003028201111561204657612045611edf565b5b92915050565b60008060008060008060c0878903121561206957612068611999565b5b600087013567ffffffffffffffff8111156120875761208661199e565b5b61209389828a01611fd4565b965096505060206120a689828a0161202a565b94505060806120b789828a01611ec0565b93505060a087013567ffffffffffffffff8111156120d8576120d761199e565b5b6120e489828a01611ee4565b92509250509295509295509295565b60006020820190506121086000830184611a47565b92915050565b60006020820190506121236000830184611b69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217057607f821691505b60208210810361218357612182612129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121cd6000830184611a38565b92915050565b6000815190506121e2816119ad565b92915050565b6000602082840312156121fe576121fd611999565b5b600061220c848285016121d3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612271602383611a61565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122e1826119a3565b91506122ec836119a3565b9250828203905081811115612304576123036122a7565b5b92915050565b6000612315826119a3565b9150612320836119a3565b9250828201905080821115612338576123376122a7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b600061239a603183611a61565b91506123a58261233e565b604082019050919050565b600060208201905081810360008301526123c98161238d565b9050919050565b6000806000606084860312156123e9576123e8611999565b5b60006123f7868287016119c4565b9350506020612408868287016119c4565b9250506040612419868287016119c4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612459600e83611a61565b915061246482612423565b602082019050919050565b60006040820190506124846000830184611a47565b81810360208301526124958161244c565b905092915050565b60006124a8826119a3565b91506124b3836119a3565b92508282026124c1816119a3565b915082820484148315176124d8576124d76122a7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612515601683611a61565b9150612520826124df565b602082019050919050565b6000602082019050818103600083015261254481612508565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612581601483611a61565b915061258c8261254b565b602082019050919050565b60006040820190506125ac6000830184611a47565b81810360208301526125bd81612574565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b60006125fb601683611a61565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612667601683611a61565b915061267282612631565b602082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b60008190508160005260206000209050919050565b600081546126bf81612158565b6126c98186611b83565b945060018216600081146126e457600181146126fa5761272d565b60ff19831686528115156020028601935061272d565b6127038561269d565b60005b8381101561272557815481890152600182019150602081019050612706565b808801955050505b50505092915050565b600060608201905061274b6000830186611a47565b6127586020830185611a47565b818103604083015261276a81846126b2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ae826119a3565b91506127b9836119a3565b9250826127c9576127c8612774565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612856604e83611a61565b9150612861826127d4565b606082019050919050565b6000602082019050818103600083015261288581612849565b9050919050565b6000612897826119a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128c9576128c86122a7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612933565b61297a8683612933565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129b76129b26129ad846119a3565b612992565b6119a3565b9050919050565b6000819050919050565b6129d18361299c565b6129e56129dd826129be565b848454612940565b825550505050565b600090565b6129fa6129ed565b612a058184846129c8565b505050565b5b81811015612a2957612a1e6000826129f2565b600181019050612a0b565b5050565b601f821115612a6e57612a3f8161290e565b612a4884612923565b81016020851015612a57578190505b612a6b612a6385612923565b830182612a0a565b50505b505050565b600082821c905092915050565b6000612a9160001984600802612a73565b1980831691505092915050565b6000612aaa8383612a80565b9150826002028217905092915050565b612ac483836128d4565b67ffffffffffffffff811115612add57612adc6128df565b5b612ae78254612158565b612af2828285612a2d565b6000601f831160018114612b215760008415612b0f578287013590505b612b198582612a9e565b865550612b81565b601f198416612b2f8661290e565b60005b82811015612b5757848901358255600182019150602085019450602081019050612b32565b86831015612b745784890135612b70601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bd657612ba78161269d565b612bb084612923565b81016020851015612bbf578190505b612bd3612bcb85612923565b830182612a0a565b50505b505050565b612be58383612b8a565b67ffffffffffffffff811115612bfe57612bfd6128df565b5b612c088254612158565b612c13828285612b95565b6000601f831160018114612c425760008415612c30578287013590505b612c3a8582612a9e565b865550612ca2565b601f198416612c508661269d565b60005b82811015612c7857848901358255600182019150602085019450602081019050612c53565b86831015612c955784890135612c91601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d07602b83611a61565b9150612d1282612cab565b604082019050919050565b60006020820190508181036000830152612d3681612cfa565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612d99602d83611a61565b9150612da482612d3d565b604082019050919050565b6000604082019050612dc46000830184611a47565b8181036020830152612dd581612d8c565b905092915050565b6000606082019050612df26000830186611a47565b612dff6020830185611a47565b612e0c6040830184611a47565b949350505050565b60008154612e2181612158565b612e2b8186611a61565b94506001821660008114612e465760018114612e5c57612e8f565b60ff198316865281151560200286019350612e8f565b612e658561290e565b60005b83811015612e8757815481890152600182019150602081019050612e68565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ec48383611ca8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612efa612ef583612ed0565b612edd565b9050919050565b6000612f0d8254612ee7565b9050919050565b6000600182019050919050565b612f2a81612e98565b612f348184612ea3565b9250612f3f82612eae565b8060005b83811015612f7757612f5482612f01565b612f5e8782612eb8565b9650612f6983612f14565b925050600181019050612f43565b505050505050565b6000610140820190508181036000830152612f9a818b612e14565b9050612fa9602083018a611a47565b612fb66040830189612f21565b612fc36080830188612f21565b612fd060c0830187611a47565b612fdd60e0830186611b69565b612feb610100830185611b69565b818103610120830152612ffe8184611b94565b90509998505050505050505050565b60006040820190506130226000830185611a47565b61302f6020830184611a47565b939250505056fea2646970667358221220dc4d5952cff4372a844a0b5c95d474e26f7e69b4b69b4ee942e143589c1242ec64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610154578063cac152a41461017d578063da35c664146101ad578063ea923e63146101d85761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119d9565b610215565b6040516100bc99989796959493929190611bcd565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119d9565b6103ad565b6040516100f99190611e4d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e69565b6106e6565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f3a565b6108d1565b005b34801561016057600080fd5b5061017b600480360381019061017691906119d9565b61119a565b005b6101976004803603810190610192919061204c565b6112c6565b6040516101a491906120f3565b60405180910390f35b3480156101b957600080fd5b506101c2611490565b6040516101cf91906120f3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa91906119d9565b611496565b60405161020c919061210e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461026a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461029690612158565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461032a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461035690612158565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905089565b6103b56118fa565b60008060008481526020019081526020016000209050806008016000600381106103e2576103e1612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156104b2578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610400565b50505050826000600381106104ca576104c9612189565b5b6020020181905250806008016001600381106104e9576104e8612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156105b9578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610507565b50505050826001600381106105d1576105d0612189565b5b6020020181905250806008016002600381106105f0576105ef612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156106c0578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061060e565b50505050826002600381106106d8576106d7612189565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161074091906121b8565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906121e8565b10156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990612287565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461082d91906122d6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181600701600082825461088e919061230a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108c491906120f3565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610956906123b0565b60405180910390fd5b6000806000848481019061097391906123d0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109a7576109a6612189565b5b6011020190506000816001018260100154600381106109c9576109c8612189565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508981600201819055508881600301819055508a8160040160016101000a81548160ff0219169083151502179055508b8160040160006101000a81548160ff0219169083151502179055508a610ac55760048360050160006101000a81548160ff02191690836005811115610a6357610a62611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610a97919061246f565b60405180910390a183836002016000828254610ab3919061230a565b92505081905550505050505050611192565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5691906121e8565b8a8c610b62919061230a565b6002610b6e919061249d565b1015905060016005811115610b8657610b85611ae6565b5b8460050160009054906101000a900460ff166005811115610baa57610ba9611ae6565b5b03610ccb5760008614610bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be99061252b565b60405180910390fd5b8c8015610bfc5750805b15610c335760028460050160006101000a81548160ff02191690836005811115610c2957610c28611ae6565b5b0217905550610cc6565b6002836010015410610ca85760048460050160006101000a81548160ff02191690836005811115610c6757610c66611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610c9b9190612597565b60405180910390a1610cc5565b6001836010016000828254610cbd919061230a565b925050819055505b5b611072565b60026005811115610cdf57610cde611ae6565b5b8460050160009054906101000a900460ff166005811115610d0357610d02611ae6565b5b03610e245760018614610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612611565b60405180910390fd5b8c8015610d555750805b15610d8c5760038460050160006101000a81548160ff02191690836005811115610d8257610d81611ae6565b5b0217905550610e1f565b6002836010015410610e015760048460050160006101000a81548160ff02191690836005811115610dc057610dbf611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610df49190612597565b60405180910390a1610e1e565b6001836010016000828254610e16919061230a565b925050819055505b5b611071565b60036005811115610e3857610e37611ae6565b5b8460050160009054906101000a900460ff166005811115610e5c57610e5b611ae6565b5b036110705760028614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061267d565b60405180910390fd5b8c8015610eae5750805b15610fdc5760058460050160006101000a81548160ff02191690836005811115610edb57610eda611ae6565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f0f91906120f3565b60405180910390a183603b0160009054906101000a900460ff1615610fd7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728c8c87603c016040518463ffffffff1660e01b8152600401610f9293929190612736565b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906121e8565b505b61106f565b60028360100154106110515760048460050160006101000a81548160ff021916908360058111156110105761100f611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516110449190612597565b60405180910390a161106e565b6001836010016000828254611066919061230a565b925050819055505b5b5b5b5b6001600581111561108657611085611ae6565b5b8460050160009054906101000a900460ff1660058111156110aa576110a9611ae6565b5b036110d0576110cb876000600a87600101546110c691906127a3565b6116c2565b61118a565b600260058111156110e4576110e3611ae6565b5b8460050160009054906101000a900460ff16600581111561110857611107611ae6565b5b0361112e57611129876001600a876001015461112491906127a3565b6116c2565b611189565b6003600581111561114257611141611ae6565b5b8460050160009054906101000a900460ff16600581111561116657611165611ae6565b5b0361118857611187876002600a876001015461118291906127a3565b6116c2565b5b5b5b505050505050505b505050505050565b60008060008381526020019081526020016000209050600460058111156111c4576111c3611ae6565b5b8160050160009054906101000a900460ff1660058111156111e8576111e7611ae6565b5b1480611228575060058081111561120257611201611ae6565b5b8160050160009054906101000a900460ff16600581111561122657611225611ae6565b5b145b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061286c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112c0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112db9061288c565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261134d929190612aba565b504281600401819055508560006003811061136b5761136a612189565b5b60200201358160080160006003811061138757611386612189565b5b6011020160000181905550856001600381106113a6576113a5612189565b5b6020020135816008016001600381106113c2576113c1612189565b5b6011020160000181905550856002600381106113e1576113e0612189565b5b6020020135816008016002600381106113fd576113fc612189565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261144d929190612bdb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161147d91906120f3565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114c1576114c0611ae6565b5b8160050160009054906101000a900460ff1660058111156114e5576114e4611ae6565b5b14611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612d1d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b691906121e8565b8260070154600a6115c7919061249d565b1015905060006301e1338083600401546115e1919061230a565b421190508161166c5780156116605760048360050160006101000a81548160ff0219169083600581111561161857611617611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161164c9190612daf565b60405180910390a1600093505050506116bd565b600093505050506116bd565b60018360050160006101000a81548160ff0219169083600581111561169457611693611ae6565b5b02179055506116b5856000600a86600101546116b091906127a3565b6116c2565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546116ec91906122d6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061174c5761174b612189565b5b60110201600001546006896003811061176857611767612189565b5b60020201600c8a600381106117805761177f612189565b5b6002020160028b6003811061179857611797612189565b5b015460058c600381106117ae576117ad612189565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117db93929190612ddd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161180d989796959493929190612f7f565b60206040518083038185885af115801561182b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061185091906121e8565b9050600082600801856003811061186a57611869612189565b5b60110201905060008160010182601001546003811061188c5761188b612189565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c67347987846040516118e992919061300d565b60405180910390a150505050505050565b60405180606001604052806003905b611911611927565b8152602001906001900390816119095790505090565b60405180606001604052806003905b61193e611954565b8152602001906001900390816119365790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119b6816119a3565b81146119c157600080fd5b50565b6000813590506119d3816119ad565b92915050565b6000602082840312156119ef576119ee611999565b5b60006119fd848285016119c4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3182611a06565b9050919050565b611a4181611a26565b82525050565b611a50816119a3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a90578082015181840152602081019050611a75565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab882611a56565b611ac28185611a61565b9350611ad2818560208601611a72565b611adb81611a9c565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b2657611b25611ae6565b5b50565b6000819050611b3782611b15565b919050565b6000611b4782611b29565b9050919050565b611b5781611b3c565b82525050565b60008115159050919050565b611b7281611b5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611b9f82611b78565b611ba98185611b83565b9350611bb9818560208601611a72565b611bc281611a9c565b840191505092915050565b600061012082019050611be3600083018c611a38565b611bf0602083018b611a47565b611bfd604083018a611a47565b8181036060830152611c0f8189611aad565b9050611c1e6080830188611a47565b611c2b60a0830187611b4e565b611c3860c0830186611a47565b611c4560e0830185611b69565b818103610100830152611c588184611b94565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cb1816119a3565b82525050565b611cc081611b5d565b82525050565b60e082016000820151611cdc6000850182611ca8565b506020820151611cef6020850182611cb7565b506040820151611d026040850182611cb7565b506060820151611d156060850182611ca8565b506080820151611d286080850182611ca8565b5060a0820151611d3b60a0850182611cb7565b5060c0820151611d4e60c0850182611cb7565b50505050565b6000611d608383611cc6565b60e08301905092915050565b6000602082019050919050565b611d8281611c88565b611d8c8184611c93565b9250611d9782611c9e565b8060005b83811015611dc8578151611daf8782611d54565b9650611dba83611d6c565b925050600181019050611d9b565b505050505050565b6000611ddc8383611d79565b6102a08301905092915050565b6000602082019050919050565b611dff81611c68565b611e098184611c73565b9250611e1482611c7e565b8060005b83811015611e45578151611e2c8782611dd0565b9650611e3783611de9565b925050600181019050611e18565b505050505050565b60006107e082019050611e636000830184611df6565b92915050565b60008060408385031215611e8057611e7f611999565b5b6000611e8e858286016119c4565b9250506020611e9f858286016119c4565b9150509250929050565b611eb281611b5d565b8114611ebd57600080fd5b50565b600081359050611ecf81611ea9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611efa57611ef9611ed5565b5b8235905067ffffffffffffffff811115611f1757611f16611eda565b5b602083019150836001820283011115611f3357611f32611edf565b5b9250929050565b60008060008060008060a08789031215611f5757611f56611999565b5b6000611f6589828a01611ec0565b9650506020611f7689828a01611ec0565b9550506040611f8789828a016119c4565b9450506060611f9889828a016119c4565b935050608087013567ffffffffffffffff811115611fb957611fb861199e565b5b611fc589828a01611ee4565b92509250509295509295509295565b60008083601f840112611fea57611fe9611ed5565b5b8235905067ffffffffffffffff81111561200757612006611eda565b5b60208301915083600182028301111561202357612022611edf565b5b9250929050565b60008190508260206003028201111561204657612045611edf565b5b92915050565b60008060008060008060c0878903121561206957612068611999565b5b600087013567ffffffffffffffff8111156120875761208661199e565b5b61209389828a01611fd4565b965096505060206120a689828a0161202a565b94505060806120b789828a01611ec0565b93505060a087013567ffffffffffffffff8111156120d8576120d761199e565b5b6120e489828a01611ee4565b92509250509295509295509295565b60006020820190506121086000830184611a47565b92915050565b60006020820190506121236000830184611b69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217057607f821691505b60208210810361218357612182612129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121cd6000830184611a38565b92915050565b6000815190506121e2816119ad565b92915050565b6000602082840312156121fe576121fd611999565b5b600061220c848285016121d3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612271602383611a61565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122e1826119a3565b91506122ec836119a3565b9250828203905081811115612304576123036122a7565b5b92915050565b6000612315826119a3565b9150612320836119a3565b9250828201905080821115612338576123376122a7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b600061239a603183611a61565b91506123a58261233e565b604082019050919050565b600060208201905081810360008301526123c98161238d565b9050919050565b6000806000606084860312156123e9576123e8611999565b5b60006123f7868287016119c4565b9350506020612408868287016119c4565b9250506040612419868287016119c4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612459600e83611a61565b915061246482612423565b602082019050919050565b60006040820190506124846000830184611a47565b81810360208301526124958161244c565b905092915050565b60006124a8826119a3565b91506124b3836119a3565b92508282026124c1816119a3565b915082820484148315176124d8576124d76122a7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612515601683611a61565b9150612520826124df565b602082019050919050565b6000602082019050818103600083015261254481612508565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612581601483611a61565b915061258c8261254b565b602082019050919050565b60006040820190506125ac6000830184611a47565b81810360208301526125bd81612574565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b60006125fb601683611a61565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612667601683611a61565b915061267282612631565b602082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b60008190508160005260206000209050919050565b600081546126bf81612158565b6126c98186611b83565b945060018216600081146126e457600181146126fa5761272d565b60ff19831686528115156020028601935061272d565b6127038561269d565b60005b8381101561272557815481890152600182019150602081019050612706565b808801955050505b50505092915050565b600060608201905061274b6000830186611a47565b6127586020830185611a47565b818103604083015261276a81846126b2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ae826119a3565b91506127b9836119a3565b9250826127c9576127c8612774565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612856604e83611a61565b9150612861826127d4565b606082019050919050565b6000602082019050818103600083015261288581612849565b9050919050565b6000612897826119a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128c9576128c86122a7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612933565b61297a8683612933565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129b76129b26129ad846119a3565b612992565b6119a3565b9050919050565b6000819050919050565b6129d18361299c565b6129e56129dd826129be565b848454612940565b825550505050565b600090565b6129fa6129ed565b612a058184846129c8565b505050565b5b81811015612a2957612a1e6000826129f2565b600181019050612a0b565b5050565b601f821115612a6e57612a3f8161290e565b612a4884612923565b81016020851015612a57578190505b612a6b612a6385612923565b830182612a0a565b50505b505050565b600082821c905092915050565b6000612a9160001984600802612a73565b1980831691505092915050565b6000612aaa8383612a80565b9150826002028217905092915050565b612ac483836128d4565b67ffffffffffffffff811115612add57612adc6128df565b5b612ae78254612158565b612af2828285612a2d565b6000601f831160018114612b215760008415612b0f578287013590505b612b198582612a9e565b865550612b81565b601f198416612b2f8661290e565b60005b82811015612b5757848901358255600182019150602085019450602081019050612b32565b86831015612b745784890135612b70601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bd657612ba78161269d565b612bb084612923565b81016020851015612bbf578190505b612bd3612bcb85612923565b830182612a0a565b50505b505050565b612be58383612b8a565b67ffffffffffffffff811115612bfe57612bfd6128df565b5b612c088254612158565b612c13828285612b95565b6000601f831160018114612c425760008415612c30578287013590505b612c3a8582612a9e565b865550612ca2565b601f198416612c508661269d565b60005b82811015612c7857848901358255600182019150602085019450602081019050612c53565b86831015612c955784890135612c91601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d07602b83611a61565b9150612d1282612cab565b604082019050919050565b60006020820190508181036000830152612d3681612cfa565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612d99602d83611a61565b9150612da482612d3d565b604082019050919050565b6000604082019050612dc46000830184611a47565b8181036020830152612dd581612d8c565b905092915050565b6000606082019050612df26000830186611a47565b612dff6020830185611a47565b612e0c6040830184611a47565b949350505050565b60008154612e2181612158565b612e2b8186611a61565b94506001821660008114612e465760018114612e5c57612e8f565b60ff198316865281151560200286019350612e8f565b612e658561290e565b60005b83811015612e8757815481890152600182019150602081019050612e68565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ec48383611ca8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612efa612ef583612ed0565b612edd565b9050919050565b6000612f0d8254612ee7565b9050919050565b6000600182019050919050565b612f2a81612e98565b612f348184612ea3565b9250612f3f82612eae565b8060005b83811015612f7757612f5482612f01565b612f5e8782612eb8565b9650612f6983612f14565b925050600181019050612f43565b505050505050565b6000610140820190508181036000830152612f9a818b612e14565b9050612fa9602083018a611a47565b612fb66040830189612f21565b612fc36080830188612f21565b612fd060c0830187611a47565b612fdd60e0830186611b69565b612feb610100830185611b69565b818103610120830152612ffe8184611b94565b90509998505050505050505050565b60006040820190506130226000830185611a47565b61302f6020830184611a47565b939250505056fea2646970667358221220dc4d5952cff4372a844a0b5c95d474e26f7e69b4b69b4ee942e143589c1242ec64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Reputation.json b/backend/contractArtifacts/Reputation.json new file mode 100644 index 0000000..c1d61e2 --- /dev/null +++ b/backend/contractArtifacts/Reputation.json @@ -0,0 +1,460 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Reputation", + "sourceName": "contracts/core/Reputation.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "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": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "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": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "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": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "forwardAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "spendAllowance", + "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": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b6117d3806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638ce516da11610097578063dd62ed3e11610066578063dd62ed3e146102ad578063dd8aaa4f146102dd578063e1f21c67146102f9578063fe0d695a1461031557610100565b80638ce516da1461022757806395d89b41146102435780639dc29fac14610261578063a9059cbb1461027d57610100565b8063313ce567116100d3578063313ce567146101a157806340c10f19146101bf5780635ffc7004146101db57806370a08231146101f757610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610331565b60405161011a91906110c2565b60405180910390f35b61013d6004803603810190610138919061117d565b6103c3565b60405161014a91906111d8565b60405180910390f35b61015b6103e6565b6040516101689190611202565b60405180910390f35b61018b6004803603810190610186919061121d565b6103f0565b60405161019891906111d8565b60405180910390f35b6101a961042d565b6040516101b6919061128c565b60405180910390f35b6101d960048036038101906101d4919061117d565b610436565b005b6101f560048036038101906101f0919061121d565b6104d4565b005b610211600480360381019061020c91906112a7565b610593565b60405161021e9190611202565b60405180910390f35b610241600480360381019061023c919061121d565b6105db565b005b61024b61067b565b60405161025891906110c2565b60405180910390f35b61027b6004803603810190610276919061117d565b61070d565b005b6102976004803603810190610292919061117d565b6107ab565b6040516102a491906111d8565b60405180910390f35b6102c760048036038101906102c291906112d4565b6107e8565b6040516102d49190611202565b60405180910390f35b6102f760048036038101906102f2919061121d565b61086f565b005b610313600480360381019061030e919061121d565b61090f565b005b61032f600480360381019061032a9190611352565b6109af565b005b606060038054610340906113ae565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906113ae565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b5050505050905090565b6000806103ce610a84565b90506103db818585610a8c565b600191505092915050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104249061142b565b60405180910390fd5b60006009905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611497565b60405180910390fd5b6104d08282610a9e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611529565b60405180910390fd5b61056f833383610b20565b61058e83838361057f87876107e8565b6105899190611578565b610a8c565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061161e565b60405180910390fd5b610676838383610bb4565b505050565b60606004805461068a906113ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106b6906113ae565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061168a565b60405180910390fd5b6107a78282610dd9565b5050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061142b565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611529565b60405180910390fd5b61090a838383610b20565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109969061161e565b60405180910390fd5b6109aa838383610a8c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a379061171c565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610a998383836001610e5b565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b105760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b07919061174b565b60405180910390fd5b610b1c60008383610bb4565b5050565b6000610b2c84846107e8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bae5781811015610b9e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b9593929190611766565b60405180910390fd5b610bad84848484036000610e5b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c06578060026000828254610bfa9190611578565b92505081905550610cd9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c92578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c8993929190611766565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d225780600260008282540392505081905550610d6f565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dcc9190611202565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e42919061174b565b60405180910390fd5b610e5782600083610bb4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ecd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ec4919061174b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f36919061174b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561102c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190611202565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561106c578082015181840152602081019050611051565b60008484015250505050565b6000601f19601f8301169050919050565b600061109482611032565b61109e818561103d565b93506110ae81856020860161104e565b6110b781611078565b840191505092915050565b600060208201905081810360008301526110dc8184611089565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611114826110e9565b9050919050565b61112481611109565b811461112f57600080fd5b50565b6000813590506111418161111b565b92915050565b6000819050919050565b61115a81611147565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b60008060408385031215611194576111936110e4565b5b60006111a285828601611132565b92505060206111b385828601611168565b9150509250929050565b60008115159050919050565b6111d2816111bd565b82525050565b60006020820190506111ed60008301846111c9565b92915050565b6111fc81611147565b82525050565b600060208201905061121760008301846111f3565b92915050565b600080600060608486031215611236576112356110e4565b5b600061124486828701611132565b935050602061125586828701611132565b925050604061126686828701611168565b9150509250925092565b600060ff82169050919050565b61128681611270565b82525050565b60006020820190506112a1600083018461127d565b92915050565b6000602082840312156112bd576112bc6110e4565b5b60006112cb84828501611132565b91505092915050565b600080604083850312156112eb576112ea6110e4565b5b60006112f985828601611132565b925050602061130a85828601611132565b9150509250929050565b600061131f82611109565b9050919050565b61132f81611314565b811461133a57600080fd5b50565b60008135905061134c81611326565b92915050565b600060208284031215611368576113676110e4565b5b60006113768482850161133d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113c657607f821691505b6020821081036113d9576113d861137f565b5b50919050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000611415601b8361103d565b9150611420826113df565b602082019050919050565b6000602082019050818103600083015261144481611408565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206d696e7400600082015250565b6000611481601f8361103d565b915061148c8261144b565b602082019050919050565b600060208201905081810360008301526114b081611474565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c207370656e6460008201527f416c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b600061151360298361103d565b915061151e826114b7565b604082019050919050565b6000602082019050818103600083015261154281611506565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061158382611147565b915061158e83611147565b92508282019050808211156115a6576115a5611549565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20757064617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061160860218361103d565b9150611613826115ac565b604082019050919050565b60006020820190508181036000830152611637816115fb565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206275726e00600082015250565b6000611674601f8361103d565b915061167f8261163e565b602082019050919050565b600060208201905081810360008301526116a381611667565b9050919050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061170660218361103d565b9150611711826116aa565b604082019050919050565b60006020820190508181036000830152611735816116f9565b9050919050565b61174581611109565b82525050565b6000602082019050611760600083018461173c565b92915050565b600060608201905061177b600083018661173c565b61178860208301856111f3565b61179560408301846111f3565b94935050505056fea26469706673582212209d2337a244f6f556d6c9ea9c1ad6e882de0264fa072aff6b83de3a8a2b9217c464736f6c63430008180033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638ce516da11610097578063dd62ed3e11610066578063dd62ed3e146102ad578063dd8aaa4f146102dd578063e1f21c67146102f9578063fe0d695a1461031557610100565b80638ce516da1461022757806395d89b41146102435780639dc29fac14610261578063a9059cbb1461027d57610100565b8063313ce567116100d3578063313ce567146101a157806340c10f19146101bf5780635ffc7004146101db57806370a08231146101f757610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610331565b60405161011a91906110c2565b60405180910390f35b61013d6004803603810190610138919061117d565b6103c3565b60405161014a91906111d8565b60405180910390f35b61015b6103e6565b6040516101689190611202565b60405180910390f35b61018b6004803603810190610186919061121d565b6103f0565b60405161019891906111d8565b60405180910390f35b6101a961042d565b6040516101b6919061128c565b60405180910390f35b6101d960048036038101906101d4919061117d565b610436565b005b6101f560048036038101906101f0919061121d565b6104d4565b005b610211600480360381019061020c91906112a7565b610593565b60405161021e9190611202565b60405180910390f35b610241600480360381019061023c919061121d565b6105db565b005b61024b61067b565b60405161025891906110c2565b60405180910390f35b61027b6004803603810190610276919061117d565b61070d565b005b6102976004803603810190610292919061117d565b6107ab565b6040516102a491906111d8565b60405180910390f35b6102c760048036038101906102c291906112d4565b6107e8565b6040516102d49190611202565b60405180910390f35b6102f760048036038101906102f2919061121d565b61086f565b005b610313600480360381019061030e919061121d565b61090f565b005b61032f600480360381019061032a9190611352565b6109af565b005b606060038054610340906113ae565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906113ae565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b5050505050905090565b6000806103ce610a84565b90506103db818585610a8c565b600191505092915050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104249061142b565b60405180910390fd5b60006009905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611497565b60405180910390fd5b6104d08282610a9e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611529565b60405180910390fd5b61056f833383610b20565b61058e83838361057f87876107e8565b6105899190611578565b610a8c565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061161e565b60405180910390fd5b610676838383610bb4565b505050565b60606004805461068a906113ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106b6906113ae565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061168a565b60405180910390fd5b6107a78282610dd9565b5050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061142b565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611529565b60405180910390fd5b61090a838383610b20565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109969061161e565b60405180910390fd5b6109aa838383610a8c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a379061171c565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610a998383836001610e5b565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b105760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b07919061174b565b60405180910390fd5b610b1c60008383610bb4565b5050565b6000610b2c84846107e8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bae5781811015610b9e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b9593929190611766565b60405180910390fd5b610bad84848484036000610e5b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c06578060026000828254610bfa9190611578565b92505081905550610cd9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c92578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c8993929190611766565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d225780600260008282540392505081905550610d6f565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dcc9190611202565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e42919061174b565b60405180910390fd5b610e5782600083610bb4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ecd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ec4919061174b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f36919061174b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561102c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190611202565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561106c578082015181840152602081019050611051565b60008484015250505050565b6000601f19601f8301169050919050565b600061109482611032565b61109e818561103d565b93506110ae81856020860161104e565b6110b781611078565b840191505092915050565b600060208201905081810360008301526110dc8184611089565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611114826110e9565b9050919050565b61112481611109565b811461112f57600080fd5b50565b6000813590506111418161111b565b92915050565b6000819050919050565b61115a81611147565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b60008060408385031215611194576111936110e4565b5b60006111a285828601611132565b92505060206111b385828601611168565b9150509250929050565b60008115159050919050565b6111d2816111bd565b82525050565b60006020820190506111ed60008301846111c9565b92915050565b6111fc81611147565b82525050565b600060208201905061121760008301846111f3565b92915050565b600080600060608486031215611236576112356110e4565b5b600061124486828701611132565b935050602061125586828701611132565b925050604061126686828701611168565b9150509250925092565b600060ff82169050919050565b61128681611270565b82525050565b60006020820190506112a1600083018461127d565b92915050565b6000602082840312156112bd576112bc6110e4565b5b60006112cb84828501611132565b91505092915050565b600080604083850312156112eb576112ea6110e4565b5b60006112f985828601611132565b925050602061130a85828601611132565b9150509250929050565b600061131f82611109565b9050919050565b61132f81611314565b811461133a57600080fd5b50565b60008135905061134c81611326565b92915050565b600060208284031215611368576113676110e4565b5b60006113768482850161133d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113c657607f821691505b6020821081036113d9576113d861137f565b5b50919050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000611415601b8361103d565b9150611420826113df565b602082019050919050565b6000602082019050818103600083015261144481611408565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206d696e7400600082015250565b6000611481601f8361103d565b915061148c8261144b565b602082019050919050565b600060208201905081810360008301526114b081611474565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c207370656e6460008201527f416c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b600061151360298361103d565b915061151e826114b7565b604082019050919050565b6000602082019050818103600083015261154281611506565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061158382611147565b915061158e83611147565b92508282019050808211156115a6576115a5611549565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20757064617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061160860218361103d565b9150611613826115ac565b604082019050919050565b60006020820190508181036000830152611637816115fb565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206275726e00600082015250565b6000611674601f8361103d565b915061167f8261163e565b602082019050919050565b600060208201905081810360008301526116a381611667565b9050919050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061170660218361103d565b9150611711826116aa565b604082019050919050565b60006020820190508181036000830152611735816116f9565b9050919050565b61174581611109565b82525050565b6000602082019050611760600083018461173c565b92915050565b600060608201905061177b600083018661173c565b61178860208301856111f3565b61179560408301846111f3565b94935050505056fea26469706673582212209d2337a244f6f556d6c9ea9c1ad6e882de0264fa072aff6b83de3a8a2b9217c464736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/backend/contractArtifacts/Rollup.json b/backend/contractArtifacts/Rollup.json index 0b51bcb..fe66e33 100644 --- a/backend/contractArtifacts/Rollup.json +++ b/backend/contractArtifacts/Rollup.json @@ -168,8 +168,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001d8a38038062001d8a8339818101604052810190620000379190620000f4565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505062000126565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a8826200007b565b9050919050565b6000620000bc826200009b565b9050919050565b620000ce81620000af565b8114620000da57600080fd5b50565b600081519050620000ee81620000c3565b92915050565b6000602082840312156200010d576200010c62000076565b5b60006200011d84828501620000dd565b91505092915050565b608051611c3362000157600039600081816101720152818161065b0152818161074401526108860152611c336000f3fe6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212207017c338b02f376e8792508d04f7abd2d83ca2d317d9c45d024fd44a5e249bb864736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212207017c338b02f376e8792508d04f7abd2d83ca2d317d9c45d024fd44a5e249bb864736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001d8a38038062001d8a8339818101604052810190620000379190620000f4565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505062000126565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a8826200007b565b9050919050565b6000620000bc826200009b565b9050919050565b620000ce81620000af565b8114620000da57600080fd5b50565b600081519050620000ee81620000c3565b92915050565b6000602082840312156200010d576200010c62000076565b5b60006200011d84828501620000dd565b91505092915050565b608051611c3362000157600039600081816101720152818161065b0152818161074401526108860152611c336000f3fe6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212204e268e6eb9895e3dc7c6b36750574fa3c0860c85b9b8004fa2c9c20730dfdbf964736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212204e268e6eb9895e3dc7c6b36750574fa3c0860c85b9b8004fa2c9c20730dfdbf964736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Work1.json b/backend/contractArtifacts/Work1.json index 42ae641..eba518b 100644 --- a/backend/contractArtifacts/Work1.json +++ b/backend/contractArtifacts/Work1.json @@ -439,8 +439,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002ee638038062002ee68339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b608051612c95620002516000396000818161049401528181610a0101528181610ad10152610bb30152612c956000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea264697066735822122091815ccc7a3eb2ebe2d9f1c1c980ef380333ad7f96a931bea6ce315e05414bd764736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea264697066735822122091815ccc7a3eb2ebe2d9f1c1c980ef380333ad7f96a931bea6ce315e05414bd764736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002ee638038062002ee68339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b608051612c95620002516000396000818161049401528181610a0101528181610ad10152610bb30152612c956000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea26469706673582212209c4da0e32e0f75130c369f5a20475dff14ed8ff146681a2e10c58d3e82b121ba64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea26469706673582212209c4da0e32e0f75130c369f5a20475dff14ed8ff146681a2e10c58d3e82b121ba64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/contractArtifacts/Work2.json b/backend/contractArtifacts/Work2.json index cfafb61..4979c61 100644 --- a/backend/contractArtifacts/Work2.json +++ b/backend/contractArtifacts/Work2.json @@ -444,8 +444,8 @@ "type": "function" } ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002e2638038062002e26833981810160405281019062000037919062000246565b8383838383838282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050505050505050620002b8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001358262000108565b9050919050565b6000620001498262000128565b9050919050565b6200015b816200013c565b81146200016757600080fd5b50565b6000815190506200017b8162000150565b92915050565b60006200018e8262000128565b9050919050565b620001a08162000181565b8114620001ac57600080fd5b50565b600081519050620001c08162000195565b92915050565b6000620001d38262000128565b9050919050565b620001e581620001c6565b8114620001f157600080fd5b50565b6000815190506200020581620001da565b92915050565b6000819050919050565b62000220816200020b565b81146200022c57600080fd5b50565b600081519050620002408162000215565b92915050565b6000806000806080858703121562000263576200026262000103565b5b600062000273878288016200016a565b94505060206200028687828801620001af565b93505060406200029987828801620001f4565b9250506060620002ac878288016200022f565b91505092959194509250565b60805160a051612b33620002f360003960008181610b300152610ba601526000818161049401528181610a3a0152610acf0152612b336000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220d580ca8e560f4f254ec576a8d83e600ab46458c8c3a82b0276db3f2ff668014664736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220d580ca8e560f4f254ec576a8d83e600ab46458c8c3a82b0276db3f2ff668014664736f6c63430008180033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002e2638038062002e26833981810160405281019062000037919062000246565b8383838383838282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050505050505050620002b8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001358262000108565b9050919050565b6000620001498262000128565b9050919050565b6200015b816200013c565b81146200016757600080fd5b50565b6000815190506200017b8162000150565b92915050565b60006200018e8262000128565b9050919050565b620001a08162000181565b8114620001ac57600080fd5b50565b600081519050620001c08162000195565b92915050565b6000620001d38262000128565b9050919050565b620001e581620001c6565b8114620001f157600080fd5b50565b6000815190506200020581620001da565b92915050565b6000819050919050565b62000220816200020b565b81146200022c57600080fd5b50565b600081519050620002408162000215565b92915050565b6000806000806080858703121562000263576200026262000103565b5b600062000273878288016200016a565b94505060206200028687828801620001af565b93505060406200029987828801620001f4565b9250506060620002ac878288016200022f565b91505092959194509250565b60805160a051612b33620002f360003960008181610b300152610ba601526000818161049401528181610a3a0152610acf0152612b336000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220bd2f30c070c9e13748396ddbc9f9f88ef2ea029324a3458653b9c7e838803e4864736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220bd2f30c070c9e13748396ddbc9f9f88ef2ea029324a3458653b9c7e838803e4864736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/backend/src/api/import-from-ss.js b/backend/src/api/import-from-ss.js index 991568b..0f0ceb5 100644 --- a/backend/src/api/import-from-ss.js +++ b/backend/src/api/import-from-ss.js @@ -90,9 +90,9 @@ const generatePost = async (paper) => { throw new Error('Paper has no authors with id'); } const firstAuthorWallet = new ethers.Wallet(authorsInfo[0].authorPrivKey); - const eachAuthorWeightPercent = Math.floor(1000000 / authorsInfo.length); + const eachAuthorWeightPPM = Math.floor(1000000 / authorsInfo.length); const authors = authorsInfo.map(({ authorAddress }) => ({ - weightPPM: eachAuthorWeightPercent, + weightPPM: eachAuthorWeightPPM, authorAddress, })); // Make sure author weights sum to 100% @@ -136,7 +136,7 @@ const importPaper = async (paper) => { console.log('references count:', paper.references.length); const { paperId } = paper; const references = paper.references.filter((x) => !!x.paperId); - const eachCitationWeightPercent = Math.floor(PPM_TO_CITATIONS / references.length); + const eachCitationWeightPPM = Math.floor(PPM_TO_CITATIONS / references.length); const citations = (await Promise.mapSeries( references, async (citedPaper) => { @@ -147,7 +147,7 @@ const importPaper = async (paper) => { const citedPost = await generatePost(citedPaper); const citedPostHash = objectHash(citedPost); return { - weightPPM: eachCitationWeightPercent, + weightPPM: eachCitationWeightPPM, targetPostId: citedPostHash, }; } catch (e) { diff --git a/backend/src/contract-listeners/rollup.js b/backend/src/contract-listeners/rollup.js deleted file mode 100644 index 5acf01d..0000000 --- a/backend/src/contract-listeners/rollup.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - start: () => {}, -}; diff --git a/backend/src/contract-listeners/validation-pools.js b/backend/src/contract-listeners/validation-pools.js deleted file mode 100644 index 17fce71..0000000 --- a/backend/src/contract-listeners/validation-pools.js +++ /dev/null @@ -1,99 +0,0 @@ -const { dao, proposals } = require('../util/contracts'); -const read = require('../util/forum/read'); - -const { - START_PROPOSAL_ID, - STOP_PROPOSAL_ID, - ENABLE_STAKING, -} = process.env; - -let enableStaking = true; - -// Subscribe to proposal events -const start = async () => { - if (ENABLE_STAKING === 'false') { - console.log('STAKING DISABLED'); - enableStaking = false; - } else { - if (STOP_PROPOSAL_ID) { - enableStaking = false; - // Check for status - const proposal = await proposals.proposals(STOP_PROPOSAL_ID); - if (proposal.stage === BigInt(5)) { - // Proposal is accepted - enableStaking = false; - console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is accepted. Diabling staking.`); - } else if (proposal.stage === BigInt(4)) { - // Proposal is failed - console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is failed. No effect.`); - } else { - // Register a ProposalAccepted event handler. - console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is stage ${proposal.stage.toString()}. Registering listener.`); - const proposalAcceptedHandler = (proposalIndex) => { - if (proposalIndex === STOP_PROPOSAL_ID) { - console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is accepted. Disabling staking.`); - enableStaking = false; - proposals.off('ProposalAccepted', proposalAcceptedHandler); - } - }; - proposals.on('ProposalAccepted', proposalAcceptedHandler); - } - } - if (START_PROPOSAL_ID) { - enableStaking = false; - // Check for status - const proposal = await proposals.proposals(START_PROPOSAL_ID); - if (proposal.stage === BigInt(5)) { - // Proposal is accepted - enableStaking = true; - console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is accepted. Enabling staking.`); - } else if (proposal.stage === BigInt(4)) { - // Proposal is failed - console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is failed. Disabling staking.`); - } else { - // Register a ProposalAccepted event handler. - console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is stage ${proposal.stage.toString()}. Registering listener.`); - const proposalAcceptedHandler = (proposalIndex) => { - if (proposalIndex === START_PROPOSAL_ID) { - console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is accepted. Enabling staking.`); - enableStaking = true; - proposals.off('ProposalAccepted', proposalAcceptedHandler); - } - }; - proposals.on('ProposalAccepted', proposalAcceptedHandler); - } - } - } - - console.log('registering validation pool listener'); - dao.on('ValidationPoolInitiated', async (poolIndex) => { - console.log('Validation Pool Initiated, index', poolIndex); - - const pool = await dao.validationPools(poolIndex); - console.log('postId:', pool.postId); - - // Read post from database - let post; - try { - post = await read(pool.postId); - } catch (e) { - // Post not found - console.error(`error: post for validation pool ${poolIndex} not found`); - return; - } - - console.log('post.content:', post.content); - - // We have the opportunity to stake for/against this validation pool. - // To implement the legislative process of upgrading this protocol, - // the execution of this code can be protected by a given proposal. - // The code will only execute if the proposal has been accepted. - if (!enableStaking) return; - - console.log('considering staking'); - }); -}; - -module.exports = { - start, -}; diff --git a/backend/src/index.js b/backend/src/index.js index 4a21b95..d9a767a 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -2,7 +2,7 @@ require('dotenv').config(); const api = require('./api'); const matrixBot = require('./matrix-bot'); -const contractListeners = require('./contract-listeners'); +const topics = require('./topics'); const { ENABLE_API, @@ -17,4 +17,4 @@ if (ENABLE_MATRIX !== 'false') { matrixBot.start(); } -contractListeners.start(); +topics.start(); diff --git a/backend/src/contract-listeners/index.js b/backend/src/topics/index.js similarity index 58% rename from backend/src/contract-listeners/index.js rename to backend/src/topics/index.js index 8b70e18..7aaf923 100644 --- a/backend/src/contract-listeners/index.js +++ b/backend/src/topics/index.js @@ -1,12 +1,12 @@ -const proposals = require('./proposals'); +const proposalsNotifier = require('./proposals-notifier'); const validationPools = require('./validation-pools'); +const work1 = require('./work1'); const rollup = require('./rollup'); const start = () => { - proposals.start(); - + proposalsNotifier.start(); validationPools.start(); - + work1.start(); rollup.start(); }; diff --git a/backend/src/contract-listeners/proposals.js b/backend/src/topics/proposals-notifier.js similarity index 100% rename from backend/src/contract-listeners/proposals.js rename to backend/src/topics/proposals-notifier.js diff --git a/backend/src/topics/rollup.js b/backend/src/topics/rollup.js new file mode 100644 index 0000000..6df8520 --- /dev/null +++ b/backend/src/topics/rollup.js @@ -0,0 +1,24 @@ +const { getContractAddressByNetworkName } = require('../util/contract-config'); +const { registerDecider } = require('./validation-pools'); + +const { + ETH_NETWORK, +} = process.env; + +const rollupAddress = getContractAddressByNetworkName(ETH_NETWORK, 'Rollup'); + +const start = async () => { + console.log('registering validation pool decider for rollup'); + registerDecider((pool, post) => { + // If this is not sent by the work1 contract, it's not of interest here. + if (pool.sender !== rollupAddress) return false; + + // TODO: to derive the expected content here, we need information from Matrix. + + return false; + }); +}; + +module.exports = { + start, +}; diff --git a/backend/src/topics/validation-pools.js b/backend/src/topics/validation-pools.js new file mode 100644 index 0000000..8ce0fb3 --- /dev/null +++ b/backend/src/topics/validation-pools.js @@ -0,0 +1,60 @@ +const Promise = require('bluebird'); + +const { dao } = require('../util/contracts'); +const read = require('../util/forum/read'); +const gateByProposal = require('../util/gate-by-proposal'); + +const { + ENABLE_STAKING, +} = process.env; + +const deciders = []; + +const registerDecider = (decider) => { + deciders.push(decider); +}; + +let enableStaking; + +if (ENABLE_STAKING === 'false') { + console.log('STAKING DISABLED'); + enableStaking = false; +} else { + gateByProposal(((enable) => { + enableStaking = enable; + })); +} + +const start = async () => { + dao.on('ValidationPoolInitiated', async (poolIndex) => { + console.log('Validation Pool Initiated, index', poolIndex); + const pool = await dao.validationPools(poolIndex); + // Read post from database + let post; + try { + post = await read(pool.props.postId); + } catch (e) { + // Post not found + console.error(`error: post for validation pool ${poolIndex} not found`); + return; + } + console.log('postId:', pool.props.postId); + console.log('post.content:', post.content); + const results = await Promise.mapSeries(deciders, (decider) => decider(pool, post)); + const inFavor = results.some((x) => x === true); + // We have the opportunity to stake for/against this validation pool. + // To implement the legislative process of upgrading this protocol, + // the execution of this code can be protected by a given proposal. + // The code will only execute if the proposal has been accepted. + if (!enableStaking) { + return; + } + console.log(`WOULD STAKE ${inFavor ? 'in favor of' : 'against'} pool ${poolIndex}`); + // TODO: Stake half of available reputation + }); +}; + +module.exports = { + start, + registerDecider, +}; diff --git a/backend/src/topics/work1.js b/backend/src/topics/work1.js new file mode 100644 index 0000000..81b55a5 --- /dev/null +++ b/backend/src/topics/work1.js @@ -0,0 +1,26 @@ +const { getContractAddressByNetworkName } = require('../util/contract-config'); +const { registerDecider } = require('./validation-pools'); + +const { + ETH_NETWORK, +} = process.env; + +const work1Address = getContractAddressByNetworkName(ETH_NETWORK, 'Work1'); + +const start = async () => { + console.log('registering validation pool decider for work1'); + registerDecider((pool, post) => { + // If this is not sent by the work1 contract, it's not of interest here. + if (pool.sender !== work1Address) return false; + + const expectedContent = 'This is a work evidence post'; + const result = post.content.startsWith(expectedContent); + + console.log(`Work evidence ${result ? 'matched' : 'did not match'} the expected content`); + return result; + }); +}; + +module.exports = { + start, +}; diff --git a/backend/src/util/gate-by-proposal.js b/backend/src/util/gate-by-proposal.js new file mode 100644 index 0000000..15d108d --- /dev/null +++ b/backend/src/util/gate-by-proposal.js @@ -0,0 +1,61 @@ +const { proposals } = require('./contracts'); + +const { + START_PROPOSAL_ID, + STOP_PROPOSAL_ID, +} = process.env; + +const gateByProposal = async (enable) => { + enable(true); + + if (STOP_PROPOSAL_ID) { + enable(false); + // Check for status + const proposal = await proposals.proposals(STOP_PROPOSAL_ID); + if (proposal.stage === BigInt(5)) { + // Proposal is accepted + enable(false); + console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is accepted. Diabling staking.`); + } else if (proposal.stage === BigInt(4)) { + // Proposal is failed + console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is failed. No effect.`); + } else { + // Register a ProposalAccepted event handler. + console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is stage ${proposal.stage.toString()}. Registering listener.`); + const proposalAcceptedHandler = (proposalIndex) => { + if (proposalIndex === STOP_PROPOSAL_ID) { + console.log(`STOP_PROPOSAL_ID ${STOP_PROPOSAL_ID} proposal is accepted. Disabling staking.`); + enable(false); + proposals.off('ProposalAccepted', proposalAcceptedHandler); + } + }; + proposals.on('ProposalAccepted', proposalAcceptedHandler); + } + } + if (START_PROPOSAL_ID) { + enable(false); + // Check for status + const proposal = await proposals.proposals(START_PROPOSAL_ID); + if (proposal.stage === BigInt(5)) { + // Proposal is accepted + enable(true); + console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is accepted. Enabling staking.`); + } else if (proposal.stage === BigInt(4)) { + // Proposal is failed + console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is failed. Disabling staking.`); + } else { + // Register a ProposalAccepted event handler. + console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is stage ${proposal.stage.toString()}. Registering listener.`); + const proposalAcceptedHandler = (proposalIndex) => { + if (proposalIndex === START_PROPOSAL_ID) { + console.log(`START_PROPOSAL_ID ${START_PROPOSAL_ID} proposal is accepted. Enabling staking.`); + enable(true); + proposals.off('ProposalAccepted', proposalAcceptedHandler); + } + }; + proposals.on('ProposalAccepted', proposalAcceptedHandler); + } + } +}; + +export default gateByProposal; diff --git a/ethereum/contract-addresses.json b/ethereum/contract-addresses.json index fd597d1..1e1e569 100644 --- a/ethereum/contract-addresses.json +++ b/ethereum/contract-addresses.json @@ -1,11 +1,14 @@ { "localhost": { - "DAO": "0x87933c1e51FdF52C58ee54348a9372bbDeE9A8Dc", - "Work1": "0x215078c5cf21ffB79Ee14Cf09156B94a11b7340f", - "Onboarding": "0x3c2820D27e7470075d16856D7D555FD5011451Ec", - "Proposals": "0xCd5881DB1aa6b86283a9c5660FaB65C989cf2721", - "Rollup": "0x8611676563EBcd69dC52E5829bF2914A957398C3", - "Work2": "0xC6BF1b68311e891D2BF41E4A3CB350a403831Ccd" + "DAO": "0x3287061aDCeE36C1aae420a06E4a5EaE865Fe3ce", + "Work1": "0x76Dfe9F47f06112a1b78960bf37d87CfbB6D6133", + "Onboarding": "0xd2845aE812Ee42cF024fB4C55c052365792aBd78", + "Proposals": "0x8688E736D0D72161db4D25f68EF7d0EE4856ba19", + "Rollup": "0x8BDA04936887cF11263B87185E4D19e8158c6296", + "Work2": "0xf15aCe29E5e3e4bb31FCddF2C65DF7C440449a57", + "Reputation": "0xC0f00E5915F9abE6476858fD1961EAf79395ea64", + "Forum": "0x3734B0944ea37694E85AEF60D5b256d19EDA04be", + "Bench": "0x71cb20D63576a0Fa4F620a2E96C73F82848B09e1" }, "sepolia": { "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", diff --git a/ethereum/contracts/Onboarding.sol b/ethereum/contracts/Onboarding.sol index b640960..2913d82 100644 --- a/ethereum/contracts/Onboarding.sol +++ b/ethereum/contracts/Onboarding.sol @@ -60,7 +60,7 @@ contract Onboarding is Work, IOnValidate { uint, uint, bytes calldata callbackData - ) external returns (uint) { + ) external { require( msg.sender == address(dao), "onValidate may only be called by the DAO contract" @@ -70,7 +70,7 @@ contract Onboarding is Work, IOnValidate { if (!votePasses || !quorumMet) { // refund the customer the remaining amount payable(request.customer).transfer(request.fee / 10); - return 1; + return; } // Make onboarding post Citation[] memory emptyCitations; @@ -87,6 +87,5 @@ contract Onboarding is Work, IOnValidate { false, "" ); - return 0; } } diff --git a/ethereum/contracts/Proposals.sol b/ethereum/contracts/Proposals.sol index eb92de8..5ea7d7b 100644 --- a/ethereum/contracts/Proposals.sol +++ b/ethereum/contracts/Proposals.sol @@ -153,7 +153,7 @@ contract Proposals is DAOContract, IOnValidate { uint stakedFor, uint stakedAgainst, bytes calldata callbackData - ) external returns (uint) { + ) external { require( msg.sender == address(dao), "onValidate may only be called by the DAO contract" @@ -177,7 +177,7 @@ contract Proposals is DAOContract, IOnValidate { proposal.stage = Stage.Failed; emit ProposalFailed(proposalIndex, "Quorum not met"); proposal.remainingFee += fee; - return 1; + return; } // Participation threshold of 50% @@ -238,7 +238,7 @@ contract Proposals is DAOContract, IOnValidate { } else if (proposal.stage == Stage.Referendum100) { initiateValidationPool(proposalIndex, 2, proposal.fee / 10); } - return 0; + return; } /// External function that will advance a proposal to the referendum process diff --git a/ethereum/contracts/core/ValidationPools.sol b/ethereum/contracts/core/Bench.sol similarity index 70% rename from ethereum/contracts/core/ValidationPools.sol rename to ethereum/contracts/core/Bench.sol index a0f7a16..b12af80 100644 --- a/ethereum/contracts/core/ValidationPools.sol +++ b/ethereum/contracts/core/Bench.sol @@ -1,9 +1,8 @@ // SPDX-License-Identifier: Unlicense pragma solidity ^0.8.24; -import "./Reputation.sol"; +import "./DAO.sol"; import "./Forum.sol"; -import "../interfaces/IOnValidate.sol"; struct ValidationPoolStake { uint id; @@ -20,45 +19,55 @@ struct ValidationPoolParams { bool redistributeLosingStakes; } -struct ValidationPool { - uint id; +struct ValidationPoolProps { string postId; - address sender; - uint minted; - mapping(uint => ValidationPoolStake) stakes; - uint stakeCount; - ValidationPoolParams params; uint fee; + uint minted; uint endTime; bool resolved; bool outcome; +} + +struct ValidationPool { + uint id; + address sender; + mapping(uint => ValidationPoolStake) stakes; + uint stakeCount; + ValidationPoolParams params; + ValidationPoolProps props; bool callbackOnValidate; bytes callbackData; } -contract ValidationPools is Reputation, Forum { +contract Bench { mapping(uint => ValidationPool) public validationPools; uint public validationPoolCount; + DAO dao; uint constant minDuration = 1; // 1 second uint constant maxDuration = 365_000_000 days; // 1 million years uint[2] minQuorum = [1, 10]; - event ValidationPoolInitiated(uint poolIndex); - event ValidationPoolResolved( - uint poolIndex, - bool votePasses, - bool quorumMet - ); + function registerDAO(DAO dao_) external { + require( + address(dao) == address(0), + "A DAO has already been registered" + ); + dao = dao_; + } - /// Internal function to register a stake for/against a validation pool - function _stakeOnValidationPool( - ValidationPool storage pool, + /// Register a stake for/against a validation pool + function stakeOnValidationPool( + uint poolIndex, address sender, uint256 amount, bool inFavor - ) internal { - require(block.timestamp <= pool.endTime, "Pool end time has passed"); + ) external { + ValidationPool storage pool = validationPools[poolIndex]; + require( + block.timestamp <= pool.props.endTime, + "Pool end time has passed" + ); // We don't call _update here; We defer that until evaluateOutcome. uint stakeIndex = pool.stakeCount++; ValidationPoolStake storage s = pool.stakes[stakeIndex]; @@ -68,33 +77,9 @@ contract ValidationPools is Reputation, Forum { s.id = stakeIndex; } - /// Accept reputation stakes toward a validation pool - function stakeOnValidationPool( - uint poolIndex, - uint256 amount, - bool inFavor - ) public { - ValidationPool storage pool = validationPools[poolIndex]; - _stakeOnValidationPool(pool, msg.sender, amount, inFavor); - } - - /// Accept reputation stakes toward a validation pool - function delegatedStakeOnValidationPool( - uint poolIndex, - address owner, - uint256 amount, - bool inFavor - ) public { - ValidationPool storage pool = validationPools[poolIndex]; - if (allowance(owner, msg.sender) < amount) { - amount = allowance(owner, msg.sender); - } - _spendAllowance(owner, msg.sender, amount); - _stakeOnValidationPool(pool, owner, amount, inFavor); - } - /// Accept fee to initiate a validation pool function initiateValidationPool( + address sender, string calldata postId, uint duration, uint[2] calldata quorum, // [Numerator, Denominator] @@ -104,6 +89,10 @@ contract ValidationPools is Reputation, Forum { bool callbackOnValidate, bytes calldata callbackData ) external payable returns (uint poolIndex) { + require( + msg.sender == address(dao), + "Only DAO contract may call initiateValidationPool" + ); require(msg.value > 0, "Fee is required to initiate validation pool"); require(duration >= minDuration, "Duration is too short"); require(duration <= maxDuration, "Duration is too long"); @@ -114,69 +103,77 @@ contract ValidationPools is Reputation, Forum { require(quorum[0] <= quorum[1], "Quorum is greater than one"); require(winRatio[0] <= winRatio[1], "Win ratio is greater than one"); require(bindingPercent <= 100, "Binding percent must be <= 100"); - Post storage post = posts[postId]; - require(post.authors.length != 0, "Target post not found"); poolIndex = validationPoolCount++; ValidationPool storage pool = validationPools[poolIndex]; - pool.sender = msg.sender; - pool.postId = postId; - pool.fee = msg.value; + pool.id = poolIndex; + pool.sender = sender; + pool.props.postId = postId; + pool.props.fee = msg.value; + pool.props.endTime = block.timestamp + duration; pool.params.quorum = quorum; pool.params.winRatio = winRatio; pool.params.bindingPercent = bindingPercent; pool.params.redistributeLosingStakes = redistributeLosingStakes; pool.params.duration = duration; - pool.endTime = block.timestamp + duration; - pool.id = poolIndex; pool.callbackOnValidate = callbackOnValidate; pool.callbackData = callbackData; // We use our privilege as the DAO contract to mint reputation in proportion with the fee. // Here we assume a minting ratio of 1 // TODO: Make minting ratio an adjustable parameter - _mint(address(this), msg.value); - pool.minted = msg.value; - emit ValidationPoolInitiated(poolIndex); + dao.mint(address(dao), msg.value); + pool.props.minted = msg.value; + dao.emitValidationPoolInitiated(poolIndex); } /// Evaluate outcome of a validation pool function evaluateOutcome(uint poolIndex) public returns (bool votePasses) { + require( + msg.sender == address(dao), + "Only DAO contract may call evaluateOutcome" + ); ValidationPool storage pool = validationPools[poolIndex]; - require(pool.resolved == false, "Pool is already resolved"); + require(pool.props.resolved == false, "Pool is already resolved"); uint stakedFor; uint stakedAgainst; ValidationPoolStake storage s; for (uint i = 0; i < pool.stakeCount; i++) { s = pool.stakes[i]; + // Make sure the sender still has the required balance. + // If not, automatically decrease the staked amount. + if (dao.balanceOf(s.sender) < s.amount) { + s.amount = dao.balanceOf(s.sender); + } if (s.inFavor) { stakedFor += s.amount; } else { stakedAgainst += s.amount; } } - stakedFor += pool.minted / 2; - stakedAgainst += pool.minted / 2; - if (pool.minted % 2 != 0) { + stakedFor += pool.props.minted / 2; + stakedAgainst += pool.props.minted / 2; + if (pool.props.minted % 2 != 0) { stakedFor += 1; } // Special case for early evaluation if dao.totalSupply has been staked require( - block.timestamp > pool.endTime || - stakedFor + stakedAgainst == totalSupply(), + block.timestamp > pool.props.endTime || + stakedFor + stakedAgainst == dao.totalSupply(), "Pool end time has not yet arrived" ); // Check that quorum is met if ( pool.params.quorum[1] * (stakedFor + stakedAgainst) <= - totalSupply() * pool.params.quorum[0] + dao.totalSupply() * pool.params.quorum[0] ) { // TODO: Refund fee // TODO: this could be made available for the sender to withdraw - // payable(pool.sender).transfer(pool.fee); - pool.resolved = true; - emit ValidationPoolResolved(poolIndex, false, false); + // payable(pool.sender).transfer(pool.props.fee); + pool.props.resolved = true; + dao.emitValidationPoolResolved(poolIndex, false, false); // Callback if requested if (pool.callbackOnValidate) { - IOnValidate(pool.sender).onValidate( + dao.onValidate( + pool.sender, votePasses, false, stakedFor, @@ -193,9 +190,9 @@ contract ValidationPools is Reputation, Forum { votePasses = stakedFor * pool.params.winRatio[1] >= (stakedFor + stakedAgainst) * pool.params.winRatio[0]; - pool.resolved = true; - pool.outcome = votePasses; - emit ValidationPoolResolved(poolIndex, votePasses, true); + pool.props.resolved = true; + pool.props.outcome = votePasses; + dao.emitValidationPoolResolved(poolIndex, votePasses, true); // Value of losing stakes should be distributed among winners, in proportion to their stakes // Only bindingPercent % should be redistributed @@ -209,10 +206,10 @@ contract ValidationPools is Reputation, Forum { // Losing stake uint amount = (s.amount * pool.params.bindingPercent) / 100; if (pool.params.redistributeLosingStakes) { - _update(s.sender, address(this), amount); + dao.update(s.sender, address(dao), amount); totalRewards += amount; } else { - _burn(s.sender, amount); + dao.burn(s.sender, amount); } } } @@ -221,7 +218,7 @@ contract ValidationPools is Reputation, Forum { // If vote passes, reward the author as though they had staked the winning portion of the VP initial stake // Here we assume a stakeForAuthor ratio of 0.5 // TODO: Make stakeForAuthor an adjustable parameter - totalRewards += pool.minted / 2; + totalRewards += pool.props.minted / 2; // Include the losign portion of the VP initial stake // Issue rewards to the winners for (uint i = 0; i < pool.stakeCount; i++) { @@ -234,26 +231,24 @@ contract ValidationPools is Reputation, Forum { uint reward = (((totalRewards * s.amount) / amountFromWinners) * pool.params.bindingPercent) / 100; totalAllocated += reward; - _update(address(this), s.sender, reward); + dao.update(address(dao), s.sender, reward); } } // Due to rounding, there may be some excess REP. Award it to the author. uint remainder = totalRewards - totalAllocated; - if (pool.minted % 2 != 0) { + if (pool.props.minted % 2 != 0) { // We staked the odd remainder in favor of the post, on behalf of the author. remainder += 1; } // Transfer REP to the forum instead of to the author directly - _propagateReputation( - pool.postId, - int(pool.minted / 2 + remainder), - false, - 0 + dao.propagateReputation( + pool.props.postId, + int(pool.props.minted / 2 + remainder) ); } else { // If vote does not pass, divide the losing stake among the winners - totalRewards += pool.minted; + totalRewards += pool.props.minted; for (uint i = 0; i < pool.stakeCount; i++) { s = pool.stakes[i]; if ( @@ -262,25 +257,21 @@ contract ValidationPools is Reputation, Forum { ) { // Winning stake uint reward = (((totalRewards * s.amount) / - (amountFromWinners - pool.minted / 2)) * + (amountFromWinners - pool.props.minted / 2)) * pool.params.bindingPercent) / 100; totalAllocated += reward; - _update(address(this), s.sender, reward); + dao.update(address(dao), s.sender, reward); } } } // Distribute fee proportionately among all reputation holders - for (uint i = 0; i < memberCount; i++) { - address member = members[i]; - uint share = (pool.fee * balanceOf(member)) / totalSupply(); - // TODO: For efficiency this could be modified to hold the funds for recipients to withdraw - payable(member).transfer(share); - } + dao.distributeFeeAmongMembers{value: pool.props.fee}(); // Callback if requested if (pool.callbackOnValidate) { - IOnValidate(pool.sender).onValidate( + dao.onValidate( + pool.sender, votePasses, true, stakedFor, diff --git a/ethereum/contracts/core/DAO.sol b/ethereum/contracts/core/DAO.sol index f1a95fe..d97ae49 100644 --- a/ethereum/contracts/core/DAO.sol +++ b/ethereum/contracts/core/DAO.sol @@ -3,24 +3,115 @@ pragma solidity ^0.8.24; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "./Reputation.sol"; -import "./ValidationPools.sol"; +import "./Bench.sol"; import "./Forum.sol"; import "../interfaces/IAcceptAvailability.sol"; +import "../interfaces/IOnValidate.sol"; -contract DAO is Reputation, Forum, ValidationPools { - // constructor(DAO importFrom) { - // if (address(importFrom) != address(0)) { - // for (uint i = 0; i < importFrom.memberCount(); i++) { - // members[i] = importFrom.members(i); - // isMember[members[i]] = true; - // _mint(members[i], importFrom.balanceOf(members[i])); - // } - // for (uint i = 0; i < importFrom.postCount(); i++) { - // string memory postId = importFrom.postIds(i); - // Post memory post = importFrom.posts(postId); - // } - // } - // } +import "hardhat/console.sol"; + +contract DAO { + Reputation rep; + Forum forum; + Bench bench; + mapping(uint => address) public members; + uint public memberCount; + mapping(address => bool) public isMember; + + event ValidationPoolInitiated(uint poolIndex); + event ValidationPoolResolved( + uint poolIndex, + bool votePasses, + bool quorumMet + ); + event PostAdded(string id); + + constructor(Reputation reputation_, Forum forum_, Bench bench_) { + rep = reputation_; + forum = forum_; + bench = bench_; + rep.registerDAO(this); + forum.registerDAO(this); + bench.registerDAO(this); + } + + function emitValidationPoolInitiated(uint poolIndex) public { + emit ValidationPoolInitiated(poolIndex); + } + + function emitValidationPoolResolved( + uint poolIndex, + bool votePasses, + bool quorumMet + ) public { + emit ValidationPoolResolved(poolIndex, votePasses, quorumMet); + } + + function emitPostAdded(string memory id) public { + emit PostAdded(id); + } + + function update(address from, address to, uint256 value) public { + require( + msg.sender == address(forum) || msg.sender == address(bench), + "Only DAO core contracts may call update" + ); + rep.update(from, to, value); + } + + function mint(address account, uint256 value) public { + require( + msg.sender == address(forum) || msg.sender == address(bench), + "Only DAO core contracts may call mint" + ); + rep.mint(account, value); + } + + function burn(address account, uint256 value) public { + require( + msg.sender == address(forum) || msg.sender == address(bench), + "Only DAO core contracts may call burn" + ); + rep.burn(account, value); + } + + function registerMember(address account) public { + require( + msg.sender == address(forum) || msg.sender == address(bench), + "Only DAO core contracts may call registerMember" + ); + if (!isMember[account]) { + members[memberCount++] = account; + isMember[account] = true; + } + } + + function balanceOf(address account) public view returns (uint256) { + return rep.balanceOf(account); + } + + function allowance( + address owner, + address spender + ) public view returns (uint256) { + return rep.allowance(owner, spender); + } + + function spendAllowance( + address owner, + address spender, + uint256 value + ) public { + return rep.spendAllowance(owner, spender, value); + } + + function forwardAllowance( + address owner, + address to, + uint256 amount + ) public { + return rep.forwardAllowance(owner, to, amount); + } /// Authorize a contract to transfer REP, and call that contract's acceptAvailability method function stakeAvailability( @@ -28,10 +119,157 @@ contract DAO is Reputation, Forum, ValidationPools { uint256 value, uint duration ) external returns (bool) { - _approve(msg.sender, to, allowance(msg.sender, to) + value); + rep.approve(msg.sender, to, allowance(msg.sender, to) + value); IAcceptAvailability(to).acceptAvailability(msg.sender, value, duration); return true; } + + function totalSupply() public view returns (uint256) { + return rep.totalSupply(); + } + + function propagateReputation(string memory postId, int amount) public { + forum.propagateReputation(postId, amount, false, 0); + } + + function distributeFeeAmongMembers() public payable { + uint allocated; + for (uint i = 0; i < memberCount; i++) { + address member = members[i]; + uint share; + if (i < memberCount - 1) { + share = (msg.value * balanceOf(member)) / totalSupply(); + allocated += share; + } else { + // Due to rounding, give the remainder to the last member + share = msg.value - allocated; + } + // TODO: For efficiency this could be modified to hold the funds for recipients to withdraw + payable(member).transfer(share); + } + } + + function validationPools( + uint poolIndex + ) + public + view + returns ( + uint id, + address sender, + uint stakeCount, + ValidationPoolParams memory params, + ValidationPoolProps memory props, + bool callbackOnValidate, + bytes memory callbackData + ) + { + return bench.validationPools(poolIndex); + } + + function validationPoolCount() public view returns (uint) { + return bench.validationPoolCount(); + } + + function initiateValidationPool( + string calldata postId, + uint duration, + uint[2] calldata quorum, // [Numerator, Denominator] + uint[2] calldata winRatio, // [Numerator, Denominator] + uint bindingPercent, + bool redistributeLosingStakes, + bool callbackOnValidate, + bytes calldata callbackData + ) external payable returns (uint) { + return + bench.initiateValidationPool{value: msg.value}( + msg.sender, + postId, + duration, + quorum, + winRatio, + bindingPercent, + redistributeLosingStakes, + callbackOnValidate, + callbackData + ); + } + + function stakeOnValidationPool( + uint poolIndex, + uint256 amount, + bool inFavor + ) public { + require( + balanceOf(msg.sender) >= amount, + "Insufficient REP balance to cover stake" + ); + // TODO: Encumber tokens + bench.stakeOnValidationPool(poolIndex, msg.sender, amount, inFavor); + } + + /// Accept reputation stakes toward a validation pool + function delegatedStakeOnValidationPool( + uint poolIndex, + address owner, + uint256 amount, + bool inFavor + ) public { + if (allowance(owner, msg.sender) < amount) { + amount = allowance(owner, msg.sender); + } + spendAllowance(owner, msg.sender, amount); + bench.stakeOnValidationPool(poolIndex, owner, amount, inFavor); + } + + function evaluateOutcome(uint poolIndex) public returns (bool) { + return bench.evaluateOutcome(poolIndex); + } + + function onValidate( + address target, + bool votePasses, + bool quorumMet, + uint stakedFor, + uint stakedAgainst, + bytes calldata callbackData + ) public { + require( + msg.sender == address(forum) || msg.sender == address(bench), + "Only DAO core contracts may call onValidate" + ); + IOnValidate(target).onValidate( + votePasses, + quorumMet, + stakedFor, + stakedAgainst, + callbackData + ); + } + + function addPost( + Author[] calldata authors, + string calldata postId, + Citation[] calldata citations + ) public { + forum.addPost(msg.sender, authors, postId, citations); + } + + function posts( + string calldata postId + ) public view returns (string memory id, address sender, uint reputation) { + return forum.posts(postId); + } + + function postCount() public view returns (uint) { + return forum.postCount(); + } + + function getPostAuthors( + string calldata postId + ) public view returns (Author[] memory) { + return forum.getPostAuthors(postId); + } } /// Convenience contract to extend for other contracts that will be initialized to diff --git a/ethereum/contracts/core/Forum.sol b/ethereum/contracts/core/Forum.sol index b23a4de..25b44c1 100644 --- a/ethereum/contracts/core/Forum.sol +++ b/ethereum/contracts/core/Forum.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Unlicense pragma solidity ^0.8.24; -import "./Reputation.sol"; +import "./DAO.sol"; struct Citation { int weightPPM; @@ -22,11 +22,12 @@ struct Post { // TODO: timestamp } -contract Forum is Reputation { +contract Forum { mapping(string => Post) public posts; string[] public postIds; uint public postCount; mapping(string => mapping(string => int)) _edgeBalances; + DAO dao; event PostAdded(string id); @@ -34,11 +35,24 @@ contract Forum is Reputation { // TODO: Make depth limit configurable; take as param in _onValidatePost callback uint depthLimit = 3; + function registerDAO(DAO dao_) external { + require( + address(dao) == address(0), + "A DAO has already been registered" + ); + dao = dao_; + } + function addPost( + address sender, Author[] calldata authors, string calldata postId, Citation[] calldata citations ) external { + require( + msg.sender == address(dao), + "Only DAO contract may call addPost" + ); require(authors.length > 0, "Post must include at least one author"); postCount++; postIds.push(postId); @@ -47,15 +61,15 @@ contract Forum is Reputation { post.authors.length == 0, "A post with this postId already exists" ); - post.sender = msg.sender; + post.sender = sender; post.id = postId; - uint authorTotalWeightPercent; + uint authorTotalWeightPPM; for (uint i = 0; i < authors.length; i++) { - authorTotalWeightPercent += authors[i].weightPPM; + authorTotalWeightPPM += authors[i].weightPPM; post.authors.push(authors[i]); } require( - authorTotalWeightPercent == 1000000, + authorTotalWeightPPM == 1000000, "Author weights must sum to 1000000" ); for (uint i = 0; i < citations.length; i++) { @@ -84,7 +98,7 @@ contract Forum is Reputation { totalCitationWeightNeg >= -1000000, "Sum of negative citations must be >= -1000000" ); - emit PostAdded(postId); + dao.emitPostAdded(postId); } function getPostAuthors( @@ -108,7 +122,7 @@ contract Forum is Reputation { outboundAmount >= 0, "Leaching from incinerator is forbidden" ); - _burn(address(this), uint(outboundAmount)); + dao.burn(address(dao), uint(outboundAmount)); return outboundAmount; } int balanceToOutbound = _edgeBalances[postId][citation.targetPostId]; @@ -123,7 +137,7 @@ contract Forum is Reputation { : -balanceToOutbound; } } - int refund = _propagateReputation( + int refund = propagateReputation( citation.targetPostId, outboundAmount, initialNegative || (depth == 0 && citation.weightPPM < 0), @@ -140,11 +154,7 @@ contract Forum is Reputation { int allocated; for (uint i = 0; i < post.authors.length; i++) { - address authorAddress = post.authors[i].authorAddress; - if (!isMember[authorAddress]) { - members[memberCount++] = authorAddress; - isMember[authorAddress] = true; - } + dao.registerMember(post.authors[i].authorAddress); } for (uint i = 0; i < post.authors.length; i++) { Author memory author = post.authors[i]; @@ -157,33 +167,34 @@ contract Forum is Reputation { share = amount - allocated; } if (share > 0) { - _update(address(this), author.authorAddress, uint(share)); - if (!isMember[author.authorAddress]) { - members[memberCount++] = author.authorAddress; - isMember[author.authorAddress] = true; - } - } else if (balanceOf(author.authorAddress) < uint(-share)) { + dao.update(address(dao), author.authorAddress, uint(share)); + dao.registerMember(author.authorAddress); + } else if (dao.balanceOf(author.authorAddress) < uint(-share)) { // Author has already lost some REP gained from this post. // That means other DAO members have earned it for policing. // We need to refund the difference here to ensure accurate bookkeeping - refund += share + int(balanceOf(author.authorAddress)); - _update( + refund += share + int(dao.balanceOf(author.authorAddress)); + dao.update( author.authorAddress, - address(this), - balanceOf(author.authorAddress) + address(dao), + dao.balanceOf(author.authorAddress) ); } else { - _update(author.authorAddress, address(this), uint(-share)); + dao.update(author.authorAddress, address(dao), uint(-share)); } } } - function _propagateReputation( + function propagateReputation( string memory postId, int amount, bool initialNegative, uint depth - ) internal returns (int refundToInbound) { + ) public returns (int refundToInbound) { + require( + msg.sender == address(dao) || msg.sender == address(this), + "Only DAO contract may call propagateReputation" + ); if (depth >= depthLimit) { return amount; } diff --git a/ethereum/contracts/core/Reputation.sol b/ethereum/contracts/core/Reputation.sol index 42c8f4a..7a36b9a 100644 --- a/ethereum/contracts/core/Reputation.sol +++ b/ethereum/contracts/core/Reputation.sol @@ -2,11 +2,36 @@ pragma solidity ^0.8.24; import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "./DAO.sol"; contract Reputation is ERC20("Reputation", "REP") { - mapping(uint => address) public members; - uint public memberCount; - mapping(address => bool) public isMember; + DAO dao; + + function registerDAO(DAO dao_) external { + require( + address(dao) == address(0), + "A DAO has already been registered" + ); + dao = dao_; + } + + function update(address from, address to, uint256 value) public { + require( + msg.sender == address(dao), + "Only DAO contract may call update" + ); + _update(from, to, value); + } + + function mint(address account, uint256 value) public { + require(msg.sender == address(dao), "Only DAO contract may call mint"); + _mint(account, value); + } + + function burn(address account, uint256 value) public { + require(msg.sender == address(dao), "Only DAO contract may call burn"); + _burn(account, value); + } function decimals() public pure override returns (uint8) { return 9; @@ -30,7 +55,31 @@ contract Reputation is ERC20("Reputation", "REP") { address to, uint256 amount ) public { + require( + msg.sender == address(dao), + "Only DAO contract may call spendAllowance" + ); _spendAllowance(owner, msg.sender, amount); _approve(owner, to, allowance(owner, to) + amount); } + + function spendAllowance( + address owner, + address spender, + uint256 value + ) public { + require( + msg.sender == address(dao), + "Only DAO contract may call spendAllowance" + ); + _spendAllowance(owner, spender, value); + } + + function approve(address owner, address spender, uint256 value) public { + require( + msg.sender == address(dao), + "Only DAO contract may call update" + ); + _approve(owner, spender, value); + } } diff --git a/ethereum/contracts/interfaces/IOnValidate.sol b/ethereum/contracts/interfaces/IOnValidate.sol index 5a25187..9a52be2 100644 --- a/ethereum/contracts/interfaces/IOnValidate.sol +++ b/ethereum/contracts/interfaces/IOnValidate.sol @@ -8,5 +8,5 @@ interface IOnValidate { uint stakedFor, uint stakedAgainst, bytes calldata callbackData - ) external returns (uint); + ) external; } diff --git a/ethereum/scripts/automatic-staking.js b/ethereum/scripts/automatic-staking.js index 07612f8..942af6a 100644 --- a/ethereum/scripts/automatic-staking.js +++ b/ethereum/scripts/automatic-staking.js @@ -1,10 +1,8 @@ const { ethers } = require('hardhat'); -const { execSync } = require('child_process'); const { getContractAddressByNetworkName } = require('./contract-config'); const readFromApi = require('./util/read-from-api'); const network = process.env.HARDHAT_NETWORK; -let currentVersionProposalId; let dao; let work1; @@ -16,20 +14,6 @@ let posts; let proposalsContract; let proposals; -const getCurrentVersion = () => { - const currentCommit = execSync('git rev-parse HEAD'); - return currentCommit.toString(); -}; - -const fetchCurrentVersionProposal = async () => { - // const p = await proposalsContract. -}; - -const getLatestVersion = () => { - const latestVersion = 'TBD'; - return latestVersion; -}; - const fetchReputation = async () => { reputation = await dao.balanceOf(account); console.log(`reputation: ${reputation}`); @@ -75,22 +59,6 @@ const fetchValidationPools = async () => { await Promise.all(promises); }; -const fetchProposal = async (proposalIndex) => { - const proposal = await proposalsContract.proposals(proposalIndex); - proposals[proposalIndex] = proposal; -}; - -const fetchProposals = async () => { - const count = await proposalsContract.proposalCount(); - console.log(`proposal count: ${count}`); - const promises = []; - proposals = []; - for (let i = 0; i < count; i += 1) { - promises.push(fetchProposal(i)); - } - await Promise.all(promises); -}; - const initialize = async () => { const getContract = (name) => ethers.getContractAt( name, @@ -106,12 +74,11 @@ const initialize = async () => { posts = []; await fetchReputation(); await fetchValidationPools(); - await fetchProposals(); }; const poolIsActive = (pool) => { - if (new Date() >= new Date(Number(pool.endTime) * 1000)) return false; - if (pool.resolved) return false; + if (new Date() >= new Date(Number(pool.props.endTime) * 1000)) return false; + if (pool.props.resolved) return false; return true; }; @@ -138,8 +105,8 @@ const poolIsProposal = (pool) => pool.sender === getContractAddressByNetworkName const getPoolStatus = (pool) => { if (poolIsActive(pool)) return 'Active'; - if (!pool.resolved) return 'Ready to Evaluate'; - if (pool.outcome) return 'Accepted'; + if (!pool.props.resolved) return 'Ready to Evaluate'; + if (pool.props.outcome) return 'Accepted'; return 'Rejected'; }; @@ -179,8 +146,6 @@ const printPool = (pool) => { }; async function main() { - console.log('Current version:', getCurrentVersion()); - await initialize(); validationPools.forEach(printPool); diff --git a/ethereum/scripts/deploy-dao.js b/ethereum/scripts/deploy-dao.js index 7cbd892..a743e04 100644 --- a/ethereum/scripts/deploy-dao.js +++ b/ethereum/scripts/deploy-dao.js @@ -1,7 +1,7 @@ -const deployContract = require('./util/deploy-contract'); +const deployCoreContracts = require('./util/deploy-core-contracts'); async function main() { - await deployContract('DAO', [], true); + await deployCoreContracts(); } main().catch((error) => { diff --git a/ethereum/scripts/deploy.js b/ethereum/scripts/deploy.js index c4c68be..cf8ea90 100644 --- a/ethereum/scripts/deploy.js +++ b/ethereum/scripts/deploy.js @@ -1,10 +1,10 @@ -const deployContract = require('./util/deploy-contract'); const deployDAOContract = require('./util/deploy-dao-contract'); const deployWorkContract = require('./util/deploy-work-contract'); const deployRollableWorkContract = require('./util/deploy-rollable-work-contract'); +const deployCoreContracts = require('./util/deploy-core-contracts'); async function main() { - await deployContract('DAO', [], true); + await deployCoreContracts(); await deployDAOContract('Rollup'); await deployDAOContract('Proposals'); await deployWorkContract('Work1'); diff --git a/ethereum/scripts/util/deploy-core-contracts.js b/ethereum/scripts/util/deploy-core-contracts.js new file mode 100644 index 0000000..c001610 --- /dev/null +++ b/ethereum/scripts/util/deploy-core-contracts.js @@ -0,0 +1,18 @@ +require('dotenv').config(); +const deployContract = require('./deploy-contract'); +const contractAddresses = require('../../contract-addresses.json'); + +const network = process.env.HARDHAT_NETWORK; + +const deployCoreContracts = async () => { + await deployContract('Reputation', [], true); + await deployContract('Forum', [], true); + await deployContract('Bench', [], true); + await deployContract('DAO', [ + contractAddresses[network].Reputation, + contractAddresses[network].Forum, + contractAddresses[network].Bench, + ], true); +}; + +module.exports = deployCoreContracts; diff --git a/ethereum/test/Forum.js b/ethereum/test/Forum.js index 2a5eb56..5b3f4e0 100644 --- a/ethereum/test/Forum.js +++ b/ethereum/test/Forum.js @@ -4,12 +4,12 @@ const { } = require('@nomicfoundation/hardhat-toolbox/network-helpers'); const { expect } = require('chai'); const { ethers } = require('hardhat'); +const deployDAO = require('./util/deploy-dao'); describe('Forum', () => { async function deploy() { const [account1, account2, account3] = await ethers.getSigners(); - const DAO = await ethers.getContractFactory('DAO'); - const dao = await DAO.deploy(); + const { dao } = await deployDAO(); return { dao, account1, account2, account3, }; @@ -118,7 +118,7 @@ describe('Forum', () => { await addPost(account2, 'second-content-id', [{ weightPPM: 500000, targetPostId: 'content-id' }]); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(0); - expect(pool.postId).to.equal('second-content-id'); + expect(pool.props.postId).to.equal('second-content-id'); await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(50); expect(await dao.balanceOf(account2)).to.equal(50); @@ -135,7 +135,7 @@ describe('Forum', () => { expect((await dao.posts('second-content-id')).reputation).to.equal(0); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(1); - expect(pool.postId).to.equal('second-content-id'); + expect(pool.props.postId).to.equal('second-content-id'); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(50); @@ -157,7 +157,7 @@ describe('Forum', () => { ]); await initiateValidationPool({ postId: 'third-content-id' }); const pool = await dao.validationPools(1); - expect(pool.postId).to.equal('third-content-id'); + expect(pool.props.postId).to.equal('third-content-id'); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(0); @@ -193,7 +193,7 @@ describe('Forum', () => { ]); await initiateValidationPool({ postId: 'second-content-id' }); const pool = await dao.validationPools(0); - expect(pool.postId).to.equal('second-content-id'); + expect(pool.props.postId).to.equal('second-content-id'); await dao.evaluateOutcome(0); expect(await dao.balanceOf(account1)).to.equal(10); expect(await dao.balanceOf(account2)).to.equal(90); @@ -388,7 +388,7 @@ describe('Forum', () => { // account1 stakes and loses await initiateValidationPool({ postId: 'content-id' }); await dao.stakeOnValidationPool(1, 25, true); - await dao.connect(account2).stakeOnValidationPool(1, 60, false); + await dao.connect(account2).stakeOnValidationPool(1, 50, false); await time.increase(POOL_DURATION + 1); await dao.evaluateOutcome(1); expect(await dao.balanceOf(account1)).to.equal(25); diff --git a/ethereum/test/Onboarding.js b/ethereum/test/Onboarding.js index 9a5165f..0a5961a 100644 --- a/ethereum/test/Onboarding.js +++ b/ethereum/test/Onboarding.js @@ -4,6 +4,7 @@ const { } = require('@nomicfoundation/hardhat-toolbox/network-helpers'); const { expect } = require('chai'); const { ethers } = require('hardhat'); +const deployDAO = require('./util/deploy-dao'); describe('Onboarding', () => { const PRICE = 100; @@ -12,8 +13,7 @@ describe('Onboarding', () => { // Contracts are deployed using the first signer/account by default const [account1, account2] = await ethers.getSigners(); - const DAO = await ethers.getContractFactory('DAO'); - const dao = await DAO.deploy(); + const { dao } = await deployDAO(); const Proposals = await ethers.getContractFactory('Proposals'); const proposals = await Proposals.deploy(dao.target); const Onboarding = await ethers.getContractFactory('Onboarding'); @@ -78,8 +78,8 @@ describe('Onboarding', () => { expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); const pool = await dao.validationPools(1); - expect(pool.postId).to.equal('evidence-content-id'); - expect(pool.fee).to.equal(PRICE * 0.9); + expect(pool.props.postId).to.equal('evidence-content-id'); + expect(pool.props.fee).to.equal(PRICE * 0.9); expect(pool.sender).to.equal(onboarding.target); }); @@ -131,10 +131,10 @@ describe('Onboarding', () => { expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account2); const pool = await dao.validationPools(2); - expect(pool.postId).to.equal('req-content-id'); - expect(pool.fee).to.equal(PRICE * 0.1); + expect(pool.props.postId).to.equal('req-content-id'); + expect(pool.props.fee).to.equal(PRICE * 0.1); expect(pool.sender).to.equal(onboarding.target); - expect(pool.fee); + expect(pool.props.fee); }); it('if the first validation pool is rejected it should not trigger a second pool', async () => { diff --git a/ethereum/test/Proposals.js b/ethereum/test/Proposals.js index cc871be..944f38d 100644 --- a/ethereum/test/Proposals.js +++ b/ethereum/test/Proposals.js @@ -5,14 +5,14 @@ const { const { expect } = require('chai'); const { ethers } = require('hardhat'); const { beforeEach } = require('mocha'); +const deployDAO = require('./util/deploy-dao'); describe('Proposal', () => { async function deploy() { // Contracts are deployed using the first signer/account by default const [account1, account2] = await ethers.getSigners(); - const DAO = await ethers.getContractFactory('DAO'); - const dao = await DAO.deploy(); + const { dao } = await deployDAO(); const Proposals = await ethers.getContractFactory('Proposals'); const proposals = await Proposals.deploy(dao.target); @@ -223,7 +223,7 @@ describe('Proposal', () => { afterEach(async () => { const pool = await dao.validationPools(3); - expect(pool.resolved).to.be.true; + expect(pool.props.resolved).to.be.true; }); it('proposal dies if it fails to meet quorum', async () => { @@ -309,7 +309,7 @@ describe('Proposal', () => { afterEach(async () => { const pool = await dao.validationPools(4); - expect(pool.resolved).to.be.true; + expect(pool.props.resolved).to.be.true; }); it('proposal dies if it fails to meet quorum', async () => { diff --git a/ethereum/test/ValidationPools.js b/ethereum/test/ValidationPools.js index 1394c69..45dec0f 100644 --- a/ethereum/test/ValidationPools.js +++ b/ethereum/test/ValidationPools.js @@ -4,13 +4,15 @@ const { } = require('@nomicfoundation/hardhat-toolbox/network-helpers'); const { expect } = require('chai'); const { ethers } = require('hardhat'); +const deployDAO = require('./util/deploy-dao'); describe('Validation Pools', () => { async function deploy() { const [account1, account2] = await ethers.getSigners(); - const DAO = await ethers.getContractFactory('DAO'); - const dao = await DAO.deploy(); - return { dao, account1, account2 }; + const { dao } = await deployDAO(); + return { + dao, account1, account2, + }; } let dao; let account1; @@ -37,7 +39,9 @@ describe('Validation Pools', () => { ); beforeEach(async () => { - ({ dao, account1, account2 } = await loadFixture(deploy)); + ({ + dao, account1, account2, + } = await loadFixture(deploy)); await dao.addPost([{ weightPPM: 1000000, authorAddress: account1 }], 'content-id', []); const init = () => initiateValidationPool({ fee: POOL_FEE }); await expect(init()).to.emit(dao, 'ValidationPoolInitiated').withArgs(0); @@ -88,8 +92,8 @@ describe('Validation Pools', () => { const pool = await dao.validationPools(0); expect(pool).to.exist; expect(pool.params.duration).to.equal(POOL_DURATION); - expect(pool.postId).to.equal('content-id'); - expect(pool.resolved).to.be.false; + expect(pool.props.postId).to.equal('content-id'); + expect(pool.props.resolved).to.be.false; expect(pool.sender).to.equal(account1); }); }); @@ -129,7 +133,17 @@ describe('Validation Pools', () => { expect(await dao.balanceOf(account1)).to.equal(200); expect(await dao.balanceOf(dao.target)).to.equal(0); const pool = await dao.validationPools(1); - expect(pool.outcome).to.be.false; + expect(pool.props.outcome).to.be.false; + }); + + it('should not be able to stake more REP than the sender owns', async () => { + await expect(dao.stakeOnValidationPool(1, 200, true)).to.be.revertedWith('Insufficient REP balance to cover stake'); + }); + }); + + describe('Delegated stake', () => { + it('should stake the lesser of the allowed amount or the owner\'s remaining balance', async () => { + // TODO: owner delegates stake and then loses rep }); }); @@ -156,8 +170,8 @@ describe('Validation Pools', () => { expect(await dao.memberCount()).to.equal(1); expect(await dao.balanceOf(account1)).to.equal(100); const pool = await dao.validationPools(0); - expect(pool.resolved).to.be.true; - expect(pool.outcome).to.be.true; + expect(pool.props.resolved).to.be.true; + expect(pool.props.outcome).to.be.true; }); it('should not be able to evaluate outcome more than once', async () => { diff --git a/ethereum/test/Work1.js b/ethereum/test/Work1.js index a2a2137..bb00bd2 100644 --- a/ethereum/test/Work1.js +++ b/ethereum/test/Work1.js @@ -4,6 +4,7 @@ const { } = require('@nomicfoundation/hardhat-toolbox/network-helpers'); const { expect } = require('chai'); const { ethers } = require('hardhat'); +const deployDAO = require('./util/deploy-dao'); describe('Work1', () => { const WORK1_PRICE = 100; @@ -12,8 +13,7 @@ describe('Work1', () => { // Contracts are deployed using the first signer/account by default const [account1, account2] = await ethers.getSigners(); - const DAO = await ethers.getContractFactory('DAO'); - const dao = await DAO.deploy(); + const { dao } = await deployDAO(); const Proposals = await ethers.getContractFactory('Proposals'); const proposals = await Proposals.deploy(dao.target); const Work1 = await ethers.getContractFactory('Work1'); @@ -223,9 +223,9 @@ describe('Work1', () => { expect(postAuthors[0].weightPPM).to.equal(1000000); expect(postAuthors[0].authorAddress).to.equal(account1); const pool = await dao.validationPools(1); - expect(pool.fee).to.equal(WORK1_PRICE); + expect(pool.props.fee).to.equal(WORK1_PRICE); expect(pool.sender).to.equal(work1.target); - expect(pool.postId).to.equal('evidence-content-id'); + expect(pool.props.postId).to.equal('evidence-content-id'); expect(pool.stakeCount).to.equal(1); await time.increase(86401); await expect(dao.evaluateOutcome(1)).to.emit(dao, 'ValidationPoolResolved').withArgs(1, true, true); diff --git a/ethereum/test/util/deploy-dao.js b/ethereum/test/util/deploy-dao.js new file mode 100644 index 0000000..01146bf --- /dev/null +++ b/ethereum/test/util/deploy-dao.js @@ -0,0 +1,24 @@ +const { ethers } = require('hardhat'); + +const deployDAO = async () => { + const Reputation = await ethers.getContractFactory('Reputation'); + const Forum = await ethers.getContractFactory('Forum'); + const Bench = await ethers.getContractFactory('Bench'); + const DAO = await ethers.getContractFactory('DAO'); + const reputation = await Reputation.deploy(); + const forum = await Forum.deploy(); + const bench = await Bench.deploy(); + const dao = await DAO.deploy( + reputation.target, + forum.target, + bench.target, + ); + return { + dao, + reputation, + forum, + bench, + }; +}; + +module.exports = deployDAO; diff --git a/frontend/contract-addresses.json b/frontend/contract-addresses.json index fd597d1..1e1e569 100644 --- a/frontend/contract-addresses.json +++ b/frontend/contract-addresses.json @@ -1,11 +1,14 @@ { "localhost": { - "DAO": "0x87933c1e51FdF52C58ee54348a9372bbDeE9A8Dc", - "Work1": "0x215078c5cf21ffB79Ee14Cf09156B94a11b7340f", - "Onboarding": "0x3c2820D27e7470075d16856D7D555FD5011451Ec", - "Proposals": "0xCd5881DB1aa6b86283a9c5660FaB65C989cf2721", - "Rollup": "0x8611676563EBcd69dC52E5829bF2914A957398C3", - "Work2": "0xC6BF1b68311e891D2BF41E4A3CB350a403831Ccd" + "DAO": "0x3287061aDCeE36C1aae420a06E4a5EaE865Fe3ce", + "Work1": "0x76Dfe9F47f06112a1b78960bf37d87CfbB6D6133", + "Onboarding": "0xd2845aE812Ee42cF024fB4C55c052365792aBd78", + "Proposals": "0x8688E736D0D72161db4D25f68EF7d0EE4856ba19", + "Rollup": "0x8BDA04936887cF11263B87185E4D19e8158c6296", + "Work2": "0xf15aCe29E5e3e4bb31FCddF2C65DF7C440449a57", + "Reputation": "0xC0f00E5915F9abE6476858fD1961EAf79395ea64", + "Forum": "0x3734B0944ea37694E85AEF60D5b256d19EDA04be", + "Bench": "0x71cb20D63576a0Fa4F620a2E96C73F82848B09e1" }, "sepolia": { "DAO": "0x8e5bd58B2ca8910C5F9be8de847d6883B15c60d2", diff --git a/frontend/contractArtifacts/Bench.json b/frontend/contractArtifacts/Bench.json new file mode 100644 index 0000000..639a786 --- /dev/null +++ b/frontend/contractArtifacts/Bench.json @@ -0,0 +1,251 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Bench", + "sourceName": "contracts/core/Bench.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "evaluateOutcome", + "outputs": [ + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "uint256[2]", + "name": "quorum", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2]", + "name": "winRatio", + "type": "uint256[2]" + }, + { + "internalType": "uint256", + "name": "bindingPercent", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "redistributeLosingStakes", + "type": "bool" + }, + { + "internalType": "bool", + "name": "callbackOnValidate", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "initiateValidationPool", + "outputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "inFavor", + "type": "bool" + } + ], + "name": "stakeOnValidationPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "validationPoolCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "validationPools", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeCount", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + }, + { + "internalType": "uint256[2]", + "name": "quorum", + "type": "uint256[2]" + }, + { + "internalType": "uint256[2]", + "name": "winRatio", + "type": "uint256[2]" + }, + { + "internalType": "uint256", + "name": "bindingPercent", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "redistributeLosingStakes", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolParams", + "name": "params", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "resolved", + "type": "bool" + }, + { + "internalType": "bool", + "name": "outcome", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolProps", + "name": "props", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "callbackOnValidate", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040526040518060400160405280600160ff168152602001600a60ff1681525060039060026200003392919062000048565b503480156200004157600080fd5b50620000b1565b82600281019282156200007f579160200282015b828111156200007e578251829060ff169055916020019190600101906200005c565b5b5090506200008e919062000092565b5090565b5b80821115620000ad57600081600090555060010162000093565b5090565b61333480620000c16000396000f3fe6080604052600436106100555760003560e01c806317c182171461005a578063217c196114610097578063642b5bfb146100c0578063a1a38bf9146100eb578063a23362791461011b578063fe0d695a1461015e575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190611ce5565b610187565b60405161008e9190611d2d565b60405180910390f35b3480156100a357600080fd5b506100be60048036038101906100b99190611dd2565b6111ce565b005b3480156100cc57600080fd5b506100d56112de565b6040516100e29190611e48565b60405180910390f35b61010560048036038101906101009190611f40565b6112e4565b6040516101129190611e48565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190611ce5565b6118c9565b60405161015597969594939291906122ed565b60405180910390f35b34801561016a57600080fd5b50610185600480360381019061018091906123ac565b611b73565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061245c565b60405180910390fd5b600080600084815260200190815260200160002090506000151581600b0160040160009054906101000a900460ff1615151461028a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610281906124c8565b60405180910390fd5b600080600080600090505b846003015481101561049a5784600201600082815260200190815260200160002091508160020154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161033c91906124e8565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d9190612518565b101561044c57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161040291906124e8565b602060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612518565b82600201819055505b8160010160009054906101000a900460ff161561047a578160020154846104739190612574565b935061048d565b81600201548361048a9190612574565b92505b8080600101915050610295565b50600284600b01600201546104af91906125d7565b836104ba9190612574565b9250600284600b01600201546104d091906125d7565b826104db9190612574565b91506000600285600b01600201546104f39190612608565b14610508576001836105059190612574565b92505b83600b01600301544211806105b75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612518565b82846105b59190612574565b145b6105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906126ab565b60405180910390fd5b836004016001016000600281106106105761060f6126cb565b5b0154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190612518565b6106ad91906126fa565b82846106b99190612574565b856004016001016001600281106106d3576106d26126cb565b5b01546106df91906126fa565b1161087a57600184600b0160040160006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e876000806040518463ffffffff1660e01b81526004016107649392919061273c565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050508360100160009054906101000a900460ff161561086d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600087878a6011016040518763ffffffff1660e01b815260040161083a9695949392919061286c565b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505b60009450505050506111c9565b83600401600301600060028110610894576108936126cb565b5b015482846108a29190612574565b6108ac91906126fa565b846004016003016001600281106108c6576108c56126cb565b5b0154846108d391906126fa565b10159450600184600b0160040160006101000a81548160ff0219169083151502179055508484600b0160040160016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e878760016040518463ffffffff1660e01b81526004016109769392919061273c565b600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050506000856109b557826109b7565b835b905060008060005b8760030154811015610bec5787600201600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610bdf576000606489600401600501548760020154610a1991906126fa565b610a2391906125d7565b90508860040160060160009054906101000a900460ff1615610b2957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae4939291906128d4565b600060405180830381600087803b158015610afe57600080fd5b505af1158015610b12573d6000803e3d6000fd5b505050508084610b229190612574565b9350610bdd565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610baa92919061290b565b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505b505b80806001019150506109bf565b508715610e9a57600287600b0160020154610c0791906125d7565b82610c129190612574565b915060005b8760030154811015610da55787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610c6f57508460010160009054906101000a900460ff161515891515145b15610d985760006064896004016005015486886002015487610c9191906126fa565b610c9b91906125d7565b610ca591906126fa565b610caf91906125d7565b90508083610cbd9190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610d64939291906128d4565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505b8080600101915050610c17565b5060008183610db49190612934565b90506000600289600b0160020154610dcc9190612608565b14610de157600181610dde9190612574565b90505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd0987289600b016000018360028c600b0160020154610e3b91906125d7565b610e459190612574565b6040518363ffffffff1660e01b8152600401610e62929190612a1a565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505050611060565b86600b016002015482610ead9190612574565b915060005b876003015481101561105e5787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610f0a57508460010160009054906101000a900460ff161515891515145b156110515760006064896004016005015460028b600b0160020154610f2f91906125d7565b87610f3a9190612934565b886002015487610f4a91906126fa565b610f5491906125d7565b610f5e91906126fa565b610f6891906125d7565b90508083610f769190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161101d939291906128d4565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50505050505b8080600101915050610eb2565b505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631e57e07888600b01600101546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050508660100160009054906101000a900460ff16156111c157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60018a8a8d6011016040518763ffffffff1660e01b815260040161118e9695949392919061286c565b600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050505b505050505050505b919050565b6000806000868152602001908152602001600020905080600b016003015442111561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612a96565b60405180910390fd5b600081600301600081548092919061124590612ab6565b91905055905060008260020160008381526020019081526020016000209050858160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010160006101000a81548160ff02191690831515021790555084816002018190555081816000018190555050505050505050565b60015481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612b70565b60405180910390fd5b600034116113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612c02565b60405180910390fd5b60018910156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612c6e565b60405180910390fd5b651cae8c13e000891115611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612cda565b60405180910390fd5b8760016002811061145a576114596126cb565b5b60200201356003600060028110611474576114736126cb565b5b015461148091906126fa565b88600060028110611494576114936126cb565b5b602002013560036001600281106114ae576114ad6126cb565b5b01546114ba91906126fa565b10156114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f290612d46565b60405180910390fd5b8760016002811061150f5761150e6126cb565b5b602002013588600060028110611528576115276126cb565b5b6020020135111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612db2565b60405180910390fd5b86600160028110611582576115816126cb565b5b60200201358760006002811061159b5761159a6126cb565b5b602002013511156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612e1e565b60405180910390fd5b6064861115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612e8a565b60405180910390fd5b6001600081548092919061163890612ab6565b919050559050600080600083815260200190815260200160002090508181600001819055508c8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b8b82600b0160000191826116b692919061307b565b503481600b016001018190555089426116cf9190612574565b81600b016003018190555088816004016001019060026116f0929190611c48565b508781600401600301906002611707929190611c48565b50868160040160050181905550858160040160060160006101000a81548160ff021916908315150217905550898160040160000181905550848160100160006101000a81548160ff021916908315150217905550838382601101918261176e92919061319c565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346040518363ffffffff1660e01b81526004016117ee92919061290b565b600060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050503481600b0160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc00bbfe836040518263ffffffff1660e01b81526004016118879190611e48565b600060405180830381600087803b1580156118a157600080fd5b505af11580156118b5573d6000803e3d6000fd5b50505050509b9a5050505050505050505050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611964576020028201915b815481526020019060010190808311611950575b50505050508152602001600382016002806020026040519081016040528092919082600280156119a9576020028201915b815481526020019060010190808311611995575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600b016040518060c00160405290816000820180546119f7906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611a23906127a2565b8015611a705780601f10611a4557610100808354040283529160200191611a70565b820191906000526020600020905b815481529060010190602001808311611a5357829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff161515151581525050908060100160009054906101000a900460ff1690806011018054611af0906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1c906127a2565b8015611b695780601f10611b3e57610100808354040283529160200191611b69565b820191906000526020600020905b815481529060010190602001808311611b4c57829003601f168201915b5050505050905087565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb906132de565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8260028101928215611c77579160200282015b82811115611c76578235825591602001919060010190611c5b565b5b509050611c849190611c88565b5090565b5b80821115611ca1576000816000905550600101611c89565b5090565b600080fd5b600080fd5b6000819050919050565b611cc281611caf565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611ca5565b5b6000611d0984828501611cd0565b91505092915050565b60008115159050919050565b611d2781611d12565b82525050565b6000602082019050611d426000830184611d1e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7382611d48565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b611daf81611d12565b8114611dba57600080fd5b50565b600081359050611dcc81611da6565b92915050565b60008060008060808587031215611dec57611deb611ca5565b5b6000611dfa87828801611cd0565b9450506020611e0b87828801611d91565b9350506040611e1c87828801611cd0565b9250506060611e2d87828801611dbd565b91505092959194509250565b611e4281611caf565b82525050565b6000602082019050611e5d6000830184611e39565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e8857611e87611e63565b5b8235905067ffffffffffffffff811115611ea557611ea4611e68565b5b602083019150836001820283011115611ec157611ec0611e6d565b5b9250929050565b600081905082602060020282011115611ee457611ee3611e6d565b5b92915050565b60008083601f840112611f0057611eff611e63565b5b8235905067ffffffffffffffff811115611f1d57611f1c611e68565b5b602083019150836001820283011115611f3957611f38611e6d565b5b9250929050565b60008060008060008060008060008060006101608c8e031215611f6657611f65611ca5565b5b6000611f748e828f01611d91565b9b505060208c013567ffffffffffffffff811115611f9557611f94611caa565b5b611fa18e828f01611e72565b9a509a50506040611fb48e828f01611cd0565b9850506060611fc58e828f01611ec8565b97505060a0611fd68e828f01611ec8565b96505060e0611fe78e828f01611cd0565b955050610100611ff98e828f01611dbd565b94505061012061200b8e828f01611dbd565b9350506101408c013567ffffffffffffffff81111561202d5761202c611caa565b5b6120398e828f01611eea565b92509250509295989b509295989b9093969950565b61205781611d68565b82525050565b61206681611caf565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612098838361205d565b60208301905092915050565b6000602082019050919050565b6120ba8161206c565b6120c48184612077565b92506120cf82612082565b8060005b838110156121005781516120e7878261208c565b96506120f2836120a4565b9250506001810190506120d3565b505050505050565b61211181611d12565b82525050565b60e08201600082015161212d600085018261205d565b50602082015161214060208501826120b1565b50604082015161215360608501826120b1565b50606082015161216660a085018261205d565b50608082015161217960c0850182612108565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b957808201518184015260208101905061219e565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e18261217f565b6121eb818561218a565b93506121fb81856020860161219b565b612204816121c5565b840191505092915050565b600060c083016000830151848203600086015261222c82826121d6565b9150506020830151612241602086018261205d565b506040830151612254604086018261205d565b506060830151612267606086018261205d565b50608083015161227a6080860182612108565b5060a083015161228d60a0860182612108565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b60006122bf82612298565b6122c981856122a3565b93506122d981856020860161219b565b6122e2816121c5565b840191505092915050565b60006101a082019050612303600083018a611e39565b612310602083018961204e565b61231d6040830188611e39565b61232a6060830187612117565b81810361014083015261233d818661220f565b905061234d610160830185611d1e565b81810361018083015261236081846122b4565b905098975050505050505050565b600061237982611d68565b9050919050565b6123898161236e565b811461239457600080fd5b50565b6000813590506123a681612380565b92915050565b6000602082840312156123c2576123c1611ca5565b5b60006123d084828501612397565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206576616c7560008201527f6174654f7574636f6d6500000000000000000000000000000000000000000000602082015250565b6000612446602a836123d9565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b60006124b26018836123d9565b91506124bd8261247c565b602082019050919050565b600060208201905081810360008301526124e1816124a5565b9050919050565b60006020820190506124fd600083018461204e565b92915050565b60008151905061251281611cb9565b92915050565b60006020828403121561252e5761252d611ca5565b5b600061253c84828501612503565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061257f82611caf565b915061258a83611caf565b92508282019050808211156125a2576125a1612545565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125e282611caf565b91506125ed83611caf565b9250826125fd576125fc6125a8565b5b828204905092915050565b600061261382611caf565b915061261e83611caf565b92508261262e5761262d6125a8565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006126956021836123d9565b91506126a082612639565b604082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270582611caf565b915061271083611caf565b925082820261271e81611caf565b9150828204841483151761273557612734612545565b5b5092915050565b60006060820190506127516000830186611e39565b61275e6020830185611d1e565b61276b6040830184611d1e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ba57607f821691505b6020821081036127cd576127cc612773565b5b50919050565b60008190508160005260206000209050919050565b600081546127f5816127a2565b6127ff81866122a3565b9450600182166000811461281a576001811461283057612863565b60ff198316865281151560200286019350612863565b612839856127d3565b60005b8381101561285b5781548189015260018201915060208101905061283c565b808801955050505b50505092915050565b600060c082019050612881600083018961204e565b61288e6020830188611d1e565b61289b6040830187611d1e565b6128a86060830186611e39565b6128b56080830185611e39565b81810360a08301526128c781846127e8565b9050979650505050505050565b60006060820190506128e9600083018661204e565b6128f6602083018561204e565b6129036040830184611e39565b949350505050565b6000604082019050612920600083018561204e565b61292d6020830184611e39565b9392505050565b600061293f82611caf565b915061294a83611caf565b925082820390508181111561296257612961612545565b5b92915050565b60008190508160005260206000209050919050565b6000815461298a816127a2565b61299481866123d9565b945060018216600081146129af57600181146129c5576129f8565b60ff1983168652811515602002860193506129f8565b6129ce85612968565b60005b838110156129f0578154818901526001820191506020810190506129d1565b808801955050505b50505092915050565b6000819050919050565b612a1481612a01565b82525050565b60006040820190508181036000830152612a34818561297d565b9050612a436020830184612a0b565b9392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000612a806018836123d9565b9150612a8b82612a4a565b602082019050919050565b60006020820190508181036000830152612aaf81612a73565b9050919050565b6000612ac182611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af357612af2612545565b5b600182019050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20696e69746960008201527f61746556616c69646174696f6e506f6f6c000000000000000000000000000000602082015250565b6000612b5a6031836123d9565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612bec602b836123d9565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612c586015836123d9565b9150612c6382612c22565b602082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000612cc46014836123d9565b9150612ccf82612c8e565b602082019050919050565b60006020820190508181036000830152612cf381612cb7565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000612d306017836123d9565b9150612d3b82612cfa565b602082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000612d9c601a836123d9565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000612e08601d836123d9565b9150612e1382612dd2565b602082019050919050565b60006020820190508181036000830152612e3781612dfb565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000612e74601e836123d9565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b600060088302612f317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ef4565b612f3b8683612ef4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612f78612f73612f6e84611caf565b612f53565b611caf565b9050919050565b6000819050919050565b612f9283612f5d565b612fa6612f9e82612f7f565b848454612f01565b825550505050565b600090565b612fbb612fae565b612fc6818484612f89565b505050565b5b81811015612fea57612fdf600082612fb3565b600181019050612fcc565b5050565b601f82111561302f5761300081612968565b61300984612ee4565b81016020851015613018578190505b61302c61302485612ee4565b830182612fcb565b50505b505050565b600082821c905092915050565b600061305260001984600802613034565b1980831691505092915050565b600061306b8383613041565b9150826002028217905092915050565b6130858383612eaa565b67ffffffffffffffff81111561309e5761309d612eb5565b5b6130a882546127a2565b6130b3828285612fee565b6000601f8311600181146130e257600084156130d0578287013590505b6130da858261305f565b865550613142565b601f1984166130f086612968565b60005b82811015613118578489013582556001820191506020850194506020810190506130f3565b868310156131355784890135613131601f891682613041565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561319757613168816127d3565b61317184612ee4565b81016020851015613180578190505b61319461318c85612ee4565b830182612fcb565b50505b505050565b6131a6838361314b565b67ffffffffffffffff8111156131bf576131be612eb5565b5b6131c982546127a2565b6131d4828285613156565b6000601f83116001811461320357600084156131f1578287013590505b6131fb858261305f565b865550613263565b601f198416613211866127d3565b60005b8281101561323957848901358255600182019150602085019450602081019050613214565b868310156132565784890135613252601f891682613041565b8355505b6001600288020188555050505b50505050505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c86021836123d9565b91506132d38261326c565b604082019050919050565b600060208201905081810360008301526132f7816132bb565b905091905056fea2646970667358221220dd9849e061c699c77e059ea430acf000005922570552a522f8543df7b854489d64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c806317c182171461005a578063217c196114610097578063642b5bfb146100c0578063a1a38bf9146100eb578063a23362791461011b578063fe0d695a1461015e575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190611ce5565b610187565b60405161008e9190611d2d565b60405180910390f35b3480156100a357600080fd5b506100be60048036038101906100b99190611dd2565b6111ce565b005b3480156100cc57600080fd5b506100d56112de565b6040516100e29190611e48565b60405180910390f35b61010560048036038101906101009190611f40565b6112e4565b6040516101129190611e48565b60405180910390f35b34801561012757600080fd5b50610142600480360381019061013d9190611ce5565b6118c9565b60405161015597969594939291906122ed565b60405180910390f35b34801561016a57600080fd5b50610185600480360381019061018091906123ac565b611b73565b005b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610219576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102109061245c565b60405180910390fd5b600080600084815260200190815260200160002090506000151581600b0160040160009054906101000a900460ff1615151461028a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610281906124c8565b60405180910390fd5b600080600080600090505b846003015481101561049a5784600201600082815260200190815260200160002091508160020154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318460030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161033c91906124e8565b602060405180830381865afa158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d9190612518565b101561044c57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318360030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161040291906124e8565b602060405180830381865afa15801561041f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104439190612518565b82600201819055505b8160010160009054906101000a900460ff161561047a578160020154846104739190612574565b935061048d565b81600201548361048a9190612574565b92505b8080600101915050610295565b50600284600b01600201546104af91906125d7565b836104ba9190612574565b9250600284600b01600201546104d091906125d7565b826104db9190612574565b91506000600285600b01600201546104f39190612608565b14610508576001836105059190612574565b92505b83600b01600301544211806105b75750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a99190612518565b82846105b59190612574565b145b6105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906126ab565b60405180910390fd5b836004016001016000600281106106105761060f6126cb565b5b0154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190612518565b6106ad91906126fa565b82846106b99190612574565b856004016001016001600281106106d3576106d26126cb565b5b01546106df91906126fa565b1161087a57600184600b0160040160006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e876000806040518463ffffffff1660e01b81526004016107649392919061273c565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050508360100160009054906101000a900460ff161561086d57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687600087878a6011016040518763ffffffff1660e01b815260040161083a9695949392919061286c565b600060405180830381600087803b15801561085457600080fd5b505af1158015610868573d6000803e3d6000fd5b505050505b60009450505050506111c9565b83600401600301600060028110610894576108936126cb565b5b015482846108a29190612574565b6108ac91906126fa565b846004016003016001600281106108c6576108c56126cb565b5b0154846108d391906126fa565b10159450600184600b0160040160006101000a81548160ff0219169083151502179055508484600b0160040160016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166378e21c6e878760016040518463ffffffff1660e01b81526004016109769392919061273c565b600060405180830381600087803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b505050506000856109b557826109b7565b835b905060008060005b8760030154811015610bec5787600201600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610bdf576000606489600401600501548760020154610a1991906126fa565b610a2391906125d7565b90508860040160060160009054906101000a900460ff1615610b2957600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610ae4939291906128d4565b600060405180830381600087803b158015610afe57600080fd5b505af1158015610b12573d6000803e3d6000fd5b505050508084610b229190612574565b9350610bdd565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac8760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610baa92919061290b565b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505b505b80806001019150506109bf565b508715610e9a57600287600b0160020154610c0791906125d7565b82610c129190612574565b915060005b8760030154811015610da55787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610c6f57508460010160009054906101000a900460ff161515891515145b15610d985760006064896004016005015486886002015487610c9191906126fa565b610c9b91906125d7565b610ca591906126fa565b610caf91906125d7565b90508083610cbd9190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401610d64939291906128d4565b600060405180830381600087803b158015610d7e57600080fd5b505af1158015610d92573d6000803e3d6000fd5b50505050505b8080600101915050610c17565b5060008183610db49190612934565b90506000600289600b0160020154610dcc9190612608565b14610de157600181610dde9190612574565b90505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fd0987289600b016000018360028c600b0160020154610e3b91906125d7565b610e459190612574565b6040518363ffffffff1660e01b8152600401610e62929190612a1a565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b5050505050611060565b86600b016002015482610ead9190612574565b915060005b876003015481101561105e5787600201600082815260200190815260200160002094508760040160060160009054906101000a900460ff168015610f0a57508460010160009054906101000a900460ff161515891515145b156110515760006064896004016005015460028b600b0160020154610f2f91906125d7565b87610f3a9190612934565b886002015487610f4a91906126fa565b610f5491906125d7565b610f5e91906126fa565b610f6891906125d7565b90508083610f769190612574565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168860030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161101d939291906128d4565b600060405180830381600087803b15801561103757600080fd5b505af115801561104b573d6000803e3d6000fd5b50505050505b8080600101915050610eb2565b505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631e57e07888600b01600101546040518263ffffffff1660e01b81526004016000604051808303818588803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b50505050508660100160009054906101000a900460ff16156111c157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631d0d37c98860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a60018a8a8d6011016040518763ffffffff1660e01b815260040161118e9695949392919061286c565b600060405180830381600087803b1580156111a857600080fd5b505af11580156111bc573d6000803e3d6000fd5b505050505b505050505050505b919050565b6000806000868152602001908152602001600020905080600b016003015442111561122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590612a96565b60405180910390fd5b600081600301600081548092919061124590612ab6565b91905055905060008260020160008381526020019081526020016000209050858160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010160006101000a81548160ff02191690831515021790555084816002018190555081816000018190555050505050505050565b60015481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136d90612b70565b60405180910390fd5b600034116113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612c02565b60405180910390fd5b60018910156113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490612c6e565b60405180910390fd5b651cae8c13e000891115611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612cda565b60405180910390fd5b8760016002811061145a576114596126cb565b5b60200201356003600060028110611474576114736126cb565b5b015461148091906126fa565b88600060028110611494576114936126cb565b5b602002013560036001600281106114ae576114ad6126cb565b5b01546114ba91906126fa565b10156114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f290612d46565b60405180910390fd5b8760016002811061150f5761150e6126cb565b5b602002013588600060028110611528576115276126cb565b5b6020020135111561156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612db2565b60405180910390fd5b86600160028110611582576115816126cb565b5b60200201358760006002811061159b5761159a6126cb565b5b602002013511156115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612e1e565b60405180910390fd5b6064861115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612e8a565b60405180910390fd5b6001600081548092919061163890612ab6565b919050559050600080600083815260200190815260200160002090508181600001819055508c8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b8b82600b0160000191826116b692919061307b565b503481600b016001018190555089426116cf9190612574565b81600b016003018190555088816004016001019060026116f0929190611c48565b508781600401600301906002611707929190611c48565b50868160040160050181905550858160040160060160006101000a81548160ff021916908315150217905550898160040160000181905550848160100160006101000a81548160ff021916908315150217905550838382601101918261176e92919061319c565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16346040518363ffffffff1660e01b81526004016117ee92919061290b565b600060405180830381600087803b15801561180857600080fd5b505af115801561181c573d6000803e3d6000fd5b505050503481600b0160020181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dc00bbfe836040518263ffffffff1660e01b81526004016118879190611e48565b600060405180830381600087803b1580156118a157600080fd5b505af11580156118b5573d6000803e3d6000fd5b50505050509b9a5050505050505050505050565b60006020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806004016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611964576020028201915b815481526020019060010190808311611950575b50505050508152602001600382016002806020026040519081016040528092919082600280156119a9576020028201915b815481526020019060010190808311611995575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600b016040518060c00160405290816000820180546119f7906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611a23906127a2565b8015611a705780601f10611a4557610100808354040283529160200191611a70565b820191906000526020600020905b815481529060010190602001808311611a5357829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff161515151581525050908060100160009054906101000a900460ff1690806011018054611af0906127a2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1c906127a2565b8015611b695780601f10611b3e57610100808354040283529160200191611b69565b820191906000526020600020905b815481529060010190602001808311611b4c57829003601f168201915b5050505050905087565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb906132de565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b8260028101928215611c77579160200282015b82811115611c76578235825591602001919060010190611c5b565b5b509050611c849190611c88565b5090565b5b80821115611ca1576000816000905550600101611c89565b5090565b600080fd5b600080fd5b6000819050919050565b611cc281611caf565b8114611ccd57600080fd5b50565b600081359050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa611ca5565b5b6000611d0984828501611cd0565b91505092915050565b60008115159050919050565b611d2781611d12565b82525050565b6000602082019050611d426000830184611d1e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d7382611d48565b9050919050565b611d8381611d68565b8114611d8e57600080fd5b50565b600081359050611da081611d7a565b92915050565b611daf81611d12565b8114611dba57600080fd5b50565b600081359050611dcc81611da6565b92915050565b60008060008060808587031215611dec57611deb611ca5565b5b6000611dfa87828801611cd0565b9450506020611e0b87828801611d91565b9350506040611e1c87828801611cd0565b9250506060611e2d87828801611dbd565b91505092959194509250565b611e4281611caf565b82525050565b6000602082019050611e5d6000830184611e39565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611e8857611e87611e63565b5b8235905067ffffffffffffffff811115611ea557611ea4611e68565b5b602083019150836001820283011115611ec157611ec0611e6d565b5b9250929050565b600081905082602060020282011115611ee457611ee3611e6d565b5b92915050565b60008083601f840112611f0057611eff611e63565b5b8235905067ffffffffffffffff811115611f1d57611f1c611e68565b5b602083019150836001820283011115611f3957611f38611e6d565b5b9250929050565b60008060008060008060008060008060006101608c8e031215611f6657611f65611ca5565b5b6000611f748e828f01611d91565b9b505060208c013567ffffffffffffffff811115611f9557611f94611caa565b5b611fa18e828f01611e72565b9a509a50506040611fb48e828f01611cd0565b9850506060611fc58e828f01611ec8565b97505060a0611fd68e828f01611ec8565b96505060e0611fe78e828f01611cd0565b955050610100611ff98e828f01611dbd565b94505061012061200b8e828f01611dbd565b9350506101408c013567ffffffffffffffff81111561202d5761202c611caa565b5b6120398e828f01611eea565b92509250509295989b509295989b9093969950565b61205781611d68565b82525050565b61206681611caf565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612098838361205d565b60208301905092915050565b6000602082019050919050565b6120ba8161206c565b6120c48184612077565b92506120cf82612082565b8060005b838110156121005781516120e7878261208c565b96506120f2836120a4565b9250506001810190506120d3565b505050505050565b61211181611d12565b82525050565b60e08201600082015161212d600085018261205d565b50602082015161214060208501826120b1565b50604082015161215360608501826120b1565b50606082015161216660a085018261205d565b50608082015161217960c0850182612108565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b957808201518184015260208101905061219e565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e18261217f565b6121eb818561218a565b93506121fb81856020860161219b565b612204816121c5565b840191505092915050565b600060c083016000830151848203600086015261222c82826121d6565b9150506020830151612241602086018261205d565b506040830151612254604086018261205d565b506060830151612267606086018261205d565b50608083015161227a6080860182612108565b5060a083015161228d60a0860182612108565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b60006122bf82612298565b6122c981856122a3565b93506122d981856020860161219b565b6122e2816121c5565b840191505092915050565b60006101a082019050612303600083018a611e39565b612310602083018961204e565b61231d6040830188611e39565b61232a6060830187612117565b81810361014083015261233d818661220f565b905061234d610160830185611d1e565b81810361018083015261236081846122b4565b905098975050505050505050565b600061237982611d68565b9050919050565b6123898161236e565b811461239457600080fd5b50565b6000813590506123a681612380565b92915050565b6000602082840312156123c2576123c1611ca5565b5b60006123d084828501612397565b91505092915050565b600082825260208201905092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206576616c7560008201527f6174654f7574636f6d6500000000000000000000000000000000000000000000602082015250565b6000612446602a836123d9565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b60006124b26018836123d9565b91506124bd8261247c565b602082019050919050565b600060208201905081810360008301526124e1816124a5565b9050919050565b60006020820190506124fd600083018461204e565b92915050565b60008151905061251281611cb9565b92915050565b60006020828403121561252e5761252d611ca5565b5b600061253c84828501612503565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061257f82611caf565b915061258a83611caf565b92508282019050808211156125a2576125a1612545565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125e282611caf565b91506125ed83611caf565b9250826125fd576125fc6125a8565b5b828204905092915050565b600061261382611caf565b915061261e83611caf565b92508261262e5761262d6125a8565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006126956021836123d9565b91506126a082612639565b604082019050919050565b600060208201905081810360008301526126c481612688565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270582611caf565b915061271083611caf565b925082820261271e81611caf565b9150828204841483151761273557612734612545565b5b5092915050565b60006060820190506127516000830186611e39565b61275e6020830185611d1e565b61276b6040830184611d1e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127ba57607f821691505b6020821081036127cd576127cc612773565b5b50919050565b60008190508160005260206000209050919050565b600081546127f5816127a2565b6127ff81866122a3565b9450600182166000811461281a576001811461283057612863565b60ff198316865281151560200286019350612863565b612839856127d3565b60005b8381101561285b5781548189015260018201915060208101905061283c565b808801955050505b50505092915050565b600060c082019050612881600083018961204e565b61288e6020830188611d1e565b61289b6040830187611d1e565b6128a86060830186611e39565b6128b56080830185611e39565b81810360a08301526128c781846127e8565b9050979650505050505050565b60006060820190506128e9600083018661204e565b6128f6602083018561204e565b6129036040830184611e39565b949350505050565b6000604082019050612920600083018561204e565b61292d6020830184611e39565b9392505050565b600061293f82611caf565b915061294a83611caf565b925082820390508181111561296257612961612545565b5b92915050565b60008190508160005260206000209050919050565b6000815461298a816127a2565b61299481866123d9565b945060018216600081146129af57600181146129c5576129f8565b60ff1983168652811515602002860193506129f8565b6129ce85612968565b60005b838110156129f0578154818901526001820191506020810190506129d1565b808801955050505b50505092915050565b6000819050919050565b612a1481612a01565b82525050565b60006040820190508181036000830152612a34818561297d565b9050612a436020830184612a0b565b9392505050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000612a806018836123d9565b9150612a8b82612a4a565b602082019050919050565b60006020820190508181036000830152612aaf81612a73565b9050919050565b6000612ac182611caf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af357612af2612545565b5b600182019050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20696e69746960008201527f61746556616c69646174696f6e506f6f6c000000000000000000000000000000602082015250565b6000612b5a6031836123d9565b9150612b6582612afe565b604082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000612bec602b836123d9565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000612c586015836123d9565b9150612c6382612c22565b602082019050919050565b60006020820190508181036000830152612c8781612c4b565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000612cc46014836123d9565b9150612ccf82612c8e565b602082019050919050565b60006020820190508181036000830152612cf381612cb7565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000612d306017836123d9565b9150612d3b82612cfa565b602082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000612d9c601a836123d9565b9150612da782612d66565b602082019050919050565b60006020820190508181036000830152612dcb81612d8f565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000612e08601d836123d9565b9150612e1382612dd2565b602082019050919050565b60006020820190508181036000830152612e3781612dfb565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000612e74601e836123d9565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020601f8301049050919050565b600082821b905092915050565b600060088302612f317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612ef4565b612f3b8683612ef4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612f78612f73612f6e84611caf565b612f53565b611caf565b9050919050565b6000819050919050565b612f9283612f5d565b612fa6612f9e82612f7f565b848454612f01565b825550505050565b600090565b612fbb612fae565b612fc6818484612f89565b505050565b5b81811015612fea57612fdf600082612fb3565b600181019050612fcc565b5050565b601f82111561302f5761300081612968565b61300984612ee4565b81016020851015613018578190505b61302c61302485612ee4565b830182612fcb565b50505b505050565b600082821c905092915050565b600061305260001984600802613034565b1980831691505092915050565b600061306b8383613041565b9150826002028217905092915050565b6130858383612eaa565b67ffffffffffffffff81111561309e5761309d612eb5565b5b6130a882546127a2565b6130b3828285612fee565b6000601f8311600181146130e257600084156130d0578287013590505b6130da858261305f565b865550613142565b601f1984166130f086612968565b60005b82811015613118578489013582556001820191506020850194506020810190506130f3565b868310156131355784890135613131601f891682613041565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561319757613168816127d3565b61317184612ee4565b81016020851015613180578190505b61319461318c85612ee4565b830182612fcb565b50505b505050565b6131a6838361314b565b67ffffffffffffffff8111156131bf576131be612eb5565b5b6131c982546127a2565b6131d4828285613156565b6000601f83116001811461320357600084156131f1578287013590505b6131fb858261305f565b865550613263565b601f198416613211866127d3565b60005b8281101561323957848901358255600182019150602085019450602081019050613214565b868310156132565784890135613252601f891682613041565b8355505b6001600288020188555050505b50505050505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006132c86021836123d9565b91506132d38261326c565b604082019050919050565b600060208201905081810360008301526132f7816132bb565b905091905056fea2646970667358221220dd9849e061c699c77e059ea430acf000005922570552a522f8543df7b854489d64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/frontend/contractArtifacts/DAO.json b/frontend/contractArtifacts/DAO.json index e864c8a..0aded48 100644 --- a/frontend/contractArtifacts/DAO.json +++ b/frontend/contractArtifacts/DAO.json @@ -6,113 +6,23 @@ { "inputs": [ { - "internalType": "address", - "name": "spender", + "internalType": "contract Reputation", + "name": "reputation_", "type": "address" }, { - "internalType": "uint256", - "name": "allowance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientAllowance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", + "internalType": "contract Forum", + "name": "forum_", "type": "address" }, { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "needed", - "type": "uint256" - } - ], - "name": "ERC20InsufficientBalance", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "approver", + "internalType": "contract Bench", + "name": "bench_", "type": "address" } ], - "name": "ERC20InvalidApprover", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "ERC20InvalidReceiver", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "ERC20InvalidSender", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "ERC20InvalidSpender", - "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" + "stateMutability": "nonpayable", + "type": "constructor" }, { "anonymous": false, @@ -127,31 +37,6 @@ "name": "PostAdded", "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" - }, { "anonymous": false, "inputs": [ @@ -261,30 +146,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -305,16 +166,21 @@ "type": "function" }, { - "inputs": [], - "name": "decimals", - "outputs": [ + "inputs": [ { - "internalType": "uint8", - "name": "", - "type": "uint8" + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "stateMutability": "pure", + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -345,6 +211,62 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "distributeFeeAmongMembers", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "id", + "type": "string" + } + ], + "name": "emitPostAdded", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + } + ], + "name": "emitValidationPoolInitiated", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "poolIndex", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + }, + { + "internalType": "bool", + "name": "quorumMet", + "type": "bool" + } + ], + "name": "emitValidationPoolResolved", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -357,7 +279,7 @@ "outputs": [ { "internalType": "bool", - "name": "votePasses", + "name": "", "type": "bool" } ], @@ -465,7 +387,7 @@ "outputs": [ { "internalType": "uint256", - "name": "poolIndex", + "name": "", "type": "uint256" } ], @@ -524,16 +446,59 @@ "type": "function" }, { - "inputs": [], - "name": "name", - "outputs": [ + "inputs": [ { - "internalType": "string", - "name": "", - "type": "string" + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "stateMutability": "view", + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bool", + "name": "votePasses", + "type": "bool" + }, + { + "internalType": "bool", + "name": "quorumMet", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "stakedFor", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "stakedAgainst", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "callbackData", + "type": "bytes" + } + ], + "name": "onValidate", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -551,28 +516,9 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "postIds", - "outputs": [ { "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "", + "name": "postId", "type": "string" } ], @@ -597,6 +543,60 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "int256", + "name": "amount", + "type": "int256" + } + ], + "name": "propagateReputation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "registerMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "spendAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -649,19 +649,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "totalSupply", @@ -679,53 +666,23 @@ "inputs": [ { "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", + "name": "from", "type": "address" }, { "internalType": "address", - "name": "", + "name": "to", "type": "address" }, { "internalType": "uint256", - "name": "", + "name": "value", "type": "uint256" } ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -745,7 +702,7 @@ "inputs": [ { "internalType": "uint256", - "name": "", + "name": "poolIndex", "type": "uint256" } ], @@ -756,21 +713,11 @@ "name": "id", "type": "uint256" }, - { - "internalType": "string", - "name": "postId", - "type": "string" - }, { "internalType": "address", "name": "sender", "type": "address" }, - { - "internalType": "uint256", - "name": "minted", - "type": "uint256" - }, { "internalType": "uint256", "name": "stakeCount", @@ -809,24 +756,41 @@ "type": "tuple" }, { - "internalType": "uint256", - "name": "fee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "endTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "resolved", - "type": "bool" - }, - { - "internalType": "bool", - "name": "outcome", - "type": "bool" + "components": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTime", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "resolved", + "type": "bool" + }, + { + "internalType": "bool", + "name": "outcome", + "type": "bool" + } + ], + "internalType": "struct ValidationPoolProps", + "name": "props", + "type": "tuple" }, { "internalType": "bool", @@ -843,8 +807,8 @@ "type": "function" } ], - "bytecode": "0x60806040526003600c556040518060400160405280600160ff168152602001600a60ff16815250600f90600262000038929190620000df565b503480156200004657600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52455000000000000000000000000000000000000000000000000000000000008152508160039081620000c49190620003c2565b508060049081620000d69190620003c2565b505050620004a9565b826002810192821562000116579160200282015b8281111562000115578251829060ff16905591602001919060010190620000f3565b5b50905062000125919062000129565b5090565b5b80821115620001445760008160009055506001016200012a565b5090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001ca57607f821691505b602082108103620001e057620001df62000182565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200024a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200020b565b6200025686836200020b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002a36200029d62000297846200026e565b62000278565b6200026e565b9050919050565b6000819050919050565b620002bf8362000282565b620002d7620002ce82620002aa565b84845462000218565b825550505050565b600090565b620002ee620002df565b620002fb818484620002b4565b505050565b5b81811015620003235762000317600082620002e4565b60018101905062000301565b5050565b601f82111562000372576200033c81620001e6565b6200034784620001fb565b8101602085101562000357578190505b6200036f6200036685620001fb565b83018262000300565b50505b505050565b600082821c905092915050565b6000620003976000198460080262000377565b1980831691505092915050565b6000620003b2838362000384565b9150826002028217905092915050565b620003cd8262000148565b67ffffffffffffffff811115620003e957620003e862000153565b5b620003f58254620001b1565b6200040282828562000327565b600060209050601f8311600181146200043a576000841562000425578287015190505b620004318582620003a4565b865550620004a1565b601f1984166200044a86620001e6565b60005b8281101562000474578489015182556001820191506020850194506020810190506200044d565b8683101562000494578489015162000490601f89168262000384565b8355505b6001600288020188555050505b505050505050565b615fde80620004b96000396000f3fe6080604052600436106101665760003560e01c8063642b5bfb116100d1578063a230c5241161008a578063da66863a11610064578063da66863a146105b0578063dd62ed3e146105ed578063e5b4d8271461062a578063f8300fca1461065357610166565b8063a230c524146104ee578063a23362791461052b578063a9059cbb1461057357610166565b8063642b5bfb146103c557806370a08231146103f0578063883802741461042d57806395d89b411461046a578063975762b3146104955780639fbe7c73146104be57610166565b806323b872dd1161012357806323b872dd146102915780632d17c062146102ce578063313ce567146102f757806350cde8ef146103225780635daf08ca1461035f5780635ffc70041461039c57610166565b806306fdde031461016b578063095ea7b31461019657806311aee380146101d357806317906c2e146101fe57806317c182171461022957806318160ddd14610266575b600080fd5b34801561017757600080fd5b50610180610692565b60405161018d9190613c03565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190613ccd565b610724565b6040516101ca9190613d28565b60405180910390f35b3480156101df57600080fd5b506101e8610747565b6040516101f59190613d52565b60405180910390f35b34801561020a57600080fd5b5061021361074d565b6040516102209190613d52565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d6d565b610753565b60405161025d9190613d28565b60405180910390f35b34801561027257600080fd5b5061027b611135565b6040516102889190613d52565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190613d9a565b61113f565b6040516102c59190613d28565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613e19565b61117c565b005b34801561030357600080fd5b5061030c6111a5565b6040516103199190613e88565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613d6d565b6111ae565b6040516103569190613c03565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d6d565b61125a565b6040516103939190613eb2565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190613d9a565b61128d565b005b3480156103d157600080fd5b506103da6112bc565b6040516103e79190613d52565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190613ecd565b6112c2565b6040516104249190613d52565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613efa565b61130a565b6040516104619190613d28565b60405180910390f35b34801561047657600080fd5b5061047f6113a5565b60405161048c9190613c03565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4d565b611437565b005b6104d860048036038101906104d39190614091565b61148a565b6040516104e59190613d52565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190613ecd565b611944565b6040516105229190613d28565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613d6d565b611964565b60405161056a9c9b9a99989796959493929190614301565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613ccd565b611bde565b6040516105a79190613d28565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906143cb565b611c1b565b6040516105e49190614505565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614527565b611d04565b6040516106219190613d52565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614613565b611d8b565b005b34801561065f57600080fd5b5061067a600480360381019061067591906147f7565b61225e565b60405161068993929190614840565b60405180910390f35b6060600380546106a1906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546106cd906148ad565b801561071a5780601f106106ef5761010080835404028352916020019161071a565b820191906000526020600020905b8154815290600101906020018083116106fd57829003601f168201915b5050505050905090565b60008061072f612346565b905061073c81858561234e565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff161515146107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba9061492a565b60405180910390fd5b600080600080600090505b846005015481101561083f5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff161561081f578160020154846108189190614979565b9350610832565b81600201548361082f9190614979565b92505b80806001019150506107ce565b506002846003015461085191906149dc565b8361085c9190614979565b92506002846003015461086f91906149dc565b8261087a9190614979565b915060006002856003015461088f9190614a0d565b146108a4576001836108a19190614979565b92505b83600e01544211806108c757506108b9611135565b82846108c59190614979565b145b610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90614ab0565b60405180910390fd5b836006016001016000600281106109205761091f614ad0565b5b015461092a611135565b6109349190614aff565b82846109409190614979565b8560060160010160016002811061095a57610959614ad0565b5b01546109669190614aff565b11610a9657600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81866000806040516109bc93929190614b41565b60405180910390a183600f0160029054906101000a900460ff1615610a89578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a44959493929190614c11565b6020604051808303816000875af1158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190614c80565b505b6000945050505050611130565b83600601600301600060028110610ab057610aaf614ad0565b5b01548284610abe9190614979565b610ac89190614aff565b84600601600301600160028110610ae257610ae1614ad0565b5b015484610aef9190614aff565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b6093929190614b41565b60405180910390a1600085610b755782610b77565b835b905060008060005b8760050154811015610c7f5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c72576000606489600601600501548760020154610bd99190614aff565b610be391906149dc565b90508860060160060160009054906101000a900460ff1615610c4157610c2e8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083612360565b8084610c3a9190614979565b9350610c70565b610c6f8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612585565b5b505b8080600101915050610b7f565b508715610e815760028760030154610c9791906149dc565b82610ca29190614979565b915060005b8760050154811015610d8d5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cff57508460010160009054906101000a900460ff161515891515145b15610d805760006064896006016005015486886002015487610d219190614aff565b610d2b91906149dc565b610d359190614aff565b610d3f91906149dc565b90508083610d4d9190614979565b9250610d7e308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610ca7565b5060008183610d9c9190614cad565b9050600060028960030154610db19190614a0d565b14610dc657600181610dc39190614979565b90505b610e7a886001018054610dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610e04906148ad565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b50505050508260028b60030154610e6891906149dc565b610e729190614979565b600080612607565b5050610f99565b866003015482610e919190614979565b915060005b8760050154811015610f975787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eee57508460010160009054906101000a900460ff161515891515145b15610f8a5760006064896006016005015460028b60030154610f1091906149dc565b87610f1b9190614cad565b886002015487610f2b9190614aff565b610f3591906149dc565b610f3f9190614aff565b610f4991906149dc565b90508083610f579190614979565b9250610f88308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610e96565b505b60005b6006548110156110625760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fe8611135565b610ff1836112c2565b8b600d01546110009190614aff565b61100a91906149dc565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611052573d6000803e3d6000fd5b5050508080600101915050610f9c565b5086600f0160029054906101000a900460ff1615611128578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b81526004016110e3959493929190614c11565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614c80565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390614d2d565b60405180910390fd5b6000600d6000858152602001908152602001600020905061119f813385856131af565b50505050565b60006009905090565b600981815481106111be57600080fd5b9060005260206000200160009150905080546111d9906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611205906148ad565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112988333836132a5565b6112b78383836112a88787611d04565b6112b29190614979565b61234e565b505050565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061132b33858561131c3389611d04565b6113269190614979565b61234e565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161136893929190614d4d565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113b4906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546113e0906148ad565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905090565b6000600d60008681526020019081526020016000209050826114598533611d04565b101561146c576114698433611d04565b92505b6114778433856132a5565b611483818585856131af565b5050505050565b60008034116114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614df6565b60405180910390fd5b6001891015611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990614e62565b60405180910390fd5b651cae8c13e00089111561155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614ece565b60405180910390fd5b8760016002811061156f5761156e614ad0565b5b6020020135600f60006002811061158957611588614ad0565b5b01546115959190614aff565b886000600281106115a9576115a8614ad0565b5b6020020135600f6001600281106115c3576115c2614ad0565b5b01546115cf9190614aff565b1015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614f3a565b60405180910390fd5b8760016002811061162457611623614ad0565b5b60200201358860006002811061163d5761163c614ad0565b5b60200201351115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614fa6565b60405180910390fd5b8660016002811061169757611696614ad0565b5b6020020135876000600281106116b0576116af614ad0565b5b602002013511156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90615012565b60405180910390fd5b606486111561173a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117319061507e565b60405180910390fd5b600060088c8c60405161174e9291906150ce565b9081526020016040518091039020905060008160020180549050036117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90615133565b60405180910390fd5b600e60008154809291906117bb90615153565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c82600101918261182e929190615352565b503481600d0181905550898160060160010190600261184e929190613b16565b508881600601600301906002611865929190613b16565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426118a99190614979565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118e9929190615473565b506118f43034613339565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161192c9190613d52565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d60205280600052604060002060009150905080600001549080600101805461198d906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546119b9906148ad565b8015611a065780601f106119db57610100808354040283529160200191611a06565b820191906000526020600020905b8154815290600101906020018083116119e957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611a93576020028201915b815481526020019060010190808311611a7f575b5050505050815260200160038201600280602002604051908101604052809291908260028015611ad8576020028201915b815481526020019060010190808311611ac4575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611b5b906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611b87906148ad565b8015611bd45780601f10611ba957610100808354040283529160200191611bd4565b820191906000526020600020905b815481529060010190602001808311611bb757829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614d2d565b60405180910390fd5b6060600060088484604051611c319291906150ce565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611cf75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c65565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc8906155b5565b60405180910390fd5b600a6000815480929190611de490615153565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e26929190615352565b50600060088585604051611e3b9291906150ce565b908152602001604051809103902090506000816002018054905014611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90615647565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611eeb929190615352565b50600080600090505b88889050811015611f8a57888882818110611f1257611f11614ad0565b5b9050604002016000013582611f279190614979565b915082600201898983818110611f4057611f3f614ad0565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f7b91906157f4565b50508080600101915050611ef4565b50620f42408114611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790615874565b60405180910390fd5b60005b8484905081101561204b5782600301858583818110611ff557611ff4614ad0565b5b905060200281019061200791906158a3565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161203c9190615a0a565b50508080600101915050611fd3565b5060008060005b846003018054905081101561216f57600085600301828154811061207957612078614ad0565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790615a8a565b60405180910390fd5b620f4240811315612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d90615b1c565b60405180910390fd5b600081131561215257808461214b9190615b3c565b9350612161565b808361215e9190615b3c565b92505b508080600101915050612052565b50620f42408213156121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90615bf2565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221090615c84565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161224a929190615cd1565b60405180910390a150505050505050505050565b600881805160208101820180518482526020830160208501208183528095505050505050600091509050806000018054612297906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546122c3906148ad565b80156123105780601f106122e557610100808354040283529160200191612310565b820191906000526020600020905b8154815290600101906020018083116122f357829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b61235b83838360016133bb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b25780600260008282546123a69190614979565b92505081905550612485565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561243e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161243593929190614d4d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ce578060026000828254039250508190555061251b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125789190613d52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f75760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125ee9190613eb2565b60405180910390fd5b61260382600083612360565b5050565b6000600c54821061261a578390506131a7565b600060088660405161262c9190615d26565b90815260200160405180910390209050600081600201805490500361265457849150506131a7565b60005b816003018054905081101561278857600082600301828154811061267e5761267d614ad0565b5b906000526020600020906002020160000154121561277b5761276d878360030183815481106126b0576126af614ad0565b5b9060005260206000209060020201604051806040016040529081600082015481526020016001820180546126e3906148ad565b80601f016020809104026020016040519081016040528092919081815260200182805461270f906148ad565b801561275c5780601f106127315761010080835404028352916020019161275c565b820191906000526020600020905b81548152906001019060200180831161273f57829003601f168201915b505050505081525050888888613592565b866127789190615d3d565b95505b8080600101915050612657565b5060005b81600301805490508110156128bd5760008260030182815481106127b3576127b2614ad0565b5b90600052602060002090600202016000015413156128b0576128a2878360030183815481106127e5576127e4614ad0565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612818906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612844906148ad565b80156128915780601f1061286657610100808354040283529160200191612891565b820191906000526020600020905b81548152906001019060200180831161287457829003601f168201915b505050505081525050888888613592565b866128ad9190615d3d565b95505b808060010191505061278c565b506000851315612ba957612b88816040518060a00160405290816000820180546128e6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612912906148ad565b801561295f5780601f106129345761010080835404028352916020019161295f565b820191906000526020600020905b81548152906001019060200180831161294257829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612a755783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906129e3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612b70578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612adf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0b906148ad565b8015612b585780601f10612b2d57610100808354040283529160200191612b58565b820191906000526020600020905b815481529060010190602001808311612b3b57829003601f168201915b50505050508152505081526020019060010190612aa2565b5050505081526020016004820154815250508661375d565b5084816004016000828254612b9d9190614979565b925050819055506131a5565b6000858260040154612bbb9190615b3c565b12612eac57612e81816040518060a0016040529081600082018054612bdf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0b906148ad565b8015612c585780601f10612c2d57610100808354040283529160200191612c58565b820191906000526020600020905b815481529060010190602001808311612c3b57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612d6e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612cdc565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612e69578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612e04906148ad565b8015612e515780601f10612e2657610100808354040283529160200191612e51565b820191906000526020600020905b815481529060010190602001808311612e3457829003601f168201915b50505050508152505081526020019060010190612d9b565b5050505081526020016004820154815250508661375d565b915084612e8d90615d80565b816004016000828254612ea09190614cad565b925050819055506131a4565b848160040154612ebc9190615b3c565b915061318c816040518060a0016040529081600082018054612edd906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612f09906148ad565b8015612f565780601f10612f2b57610100808354040283529160200191612f56565b820191906000526020600020905b815481529060010190602001808311612f3957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561306c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612fda565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131675783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546130d6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054613102906148ad565b801561314f5780601f106131245761010080835404028352916020019161314f565b820191906000526020600020905b81548152906001019060200180831161313257829003601f168201915b50505050508152505081526020019060010190613099565b505050508152602001600482015481525050826004015461318790615d80565b61375d565b826131979190615b3c565b9150600081600401819055505b5b505b949350505050565b83600e01544211156131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90615e14565b60405180910390fd5b600084600501600081548092919061320d90615153565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006132b18484611d04565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146133335781811015613323578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161331a93929190614d4d565b60405180910390fd5b613332848484840360006133bb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016133a29190613eb2565b60405180910390fd5b6133b760008383612360565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361342d5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016134249190613eb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361349f5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016134969190613eb2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561358c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516135839190613d52565b60405180910390a35b50505050565b6000620f42408560000151856135a89190615e34565b6135b29190615eac565b9050600085602001515103613614576000811215613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90615f88565b60405180910390fd5b61360f3082612585565b613754565b6000600b876040516136269190615d26565b908152602001604051809103902086602001516040516136469190615d26565b908152602001604051809103902054905083156136b357600082121561368e578061367090615d80565b8213613685578061368090615d80565b613687565b815b91506136b2565b8061369890615d80565b82126136ad57806136a890615d80565b6136af565b815b91505b5b60006136ec87602001518487806136da57506000871480156136d9575060008a60000151125b5b6001886136e79190614979565b612607565b905080836136fa9190615d3d565b925082600b8960405161370d9190615d26565b9081526020016040518091039020886020015160405161372d9190615d26565b9081526020016040518091039020600082825461374a9190615b3c565b9250508190555050505b95945050505050565b60008060005b8460400151518110156138b75760008560400151828151811061378957613788614ad0565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138a95780600560006006600081548092919061380090615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050613763565b5060005b846040015151811015613b0e576000856040015182815181106138e1576138e0614ad0565b5b60200260200101519050600060018760400151516138ff9190614cad565b83101561393957620f424082600001518761391a9190615e34565b6139249190615eac565b905080846139329190615b3c565b9350613948565b83866139459190615d3d565b90505b6000811315613a835761396030836020015183612360565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a7e57816020015160056000600660008154809291906139d190615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613aff565b80613a8d90615d80565b613a9a83602001516112c2565b1015613ae557613aad82602001516112c2565b81613ab89190615b3c565b85613ac39190615b3c565b9450613ae0826020015130613adb85602001516112c2565b612360565b613afe565b613afd82602001513083613af890615d80565b612360565b5b5b505080806001019150506138bb565b505092915050565b8260028101928215613b45579160200282015b82811115613b44578235825591602001919060010190613b29565b5b509050613b529190613b56565b5090565b5b80821115613b6f576000816000905550600101613b57565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bad578082015181840152602081019050613b92565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd582613b73565b613bdf8185613b7e565b9350613bef818560208601613b8f565b613bf881613bb9565b840191505092915050565b60006020820190508181036000830152613c1d8184613bca565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6482613c39565b9050919050565b613c7481613c59565b8114613c7f57600080fd5b50565b600081359050613c9181613c6b565b92915050565b6000819050919050565b613caa81613c97565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b60008060408385031215613ce457613ce3613c2f565b5b6000613cf285828601613c82565b9250506020613d0385828601613cb8565b9150509250929050565b60008115159050919050565b613d2281613d0d565b82525050565b6000602082019050613d3d6000830184613d19565b92915050565b613d4c81613c97565b82525050565b6000602082019050613d676000830184613d43565b92915050565b600060208284031215613d8357613d82613c2f565b5b6000613d9184828501613cb8565b91505092915050565b600080600060608486031215613db357613db2613c2f565b5b6000613dc186828701613c82565b9350506020613dd286828701613c82565b9250506040613de386828701613cb8565b9150509250925092565b613df681613d0d565b8114613e0157600080fd5b50565b600081359050613e1381613ded565b92915050565b600080600060608486031215613e3257613e31613c2f565b5b6000613e4086828701613cb8565b9350506020613e5186828701613cb8565b9250506040613e6286828701613e04565b9150509250925092565b600060ff82169050919050565b613e8281613e6c565b82525050565b6000602082019050613e9d6000830184613e79565b92915050565b613eac81613c59565b82525050565b6000602082019050613ec76000830184613ea3565b92915050565b600060208284031215613ee357613ee2613c2f565b5b6000613ef184828501613c82565b91505092915050565b600080600060608486031215613f1357613f12613c2f565b5b6000613f2186828701613c82565b9350506020613f3286828701613cb8565b9250506040613f4386828701613cb8565b9150509250925092565b60008060008060808587031215613f6757613f66613c2f565b5b6000613f7587828801613cb8565b9450506020613f8687828801613c82565b9350506040613f9787828801613cb8565b9250506060613fa887828801613e04565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613fd957613fd8613fb4565b5b8235905067ffffffffffffffff811115613ff657613ff5613fb9565b5b60208301915083600182028301111561401257614011613fbe565b5b9250929050565b60008190508260206002028201111561403557614034613fbe565b5b92915050565b60008083601f84011261405157614050613fb4565b5b8235905067ffffffffffffffff81111561406e5761406d613fb9565b5b60208301915083600182028301111561408a57614089613fbe565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140b5576140b4613c2f565b5b60008b013567ffffffffffffffff8111156140d3576140d2613c34565b5b6140df8d828e01613fc3565b9a509a505060206140f28d828e01613cb8565b98505060406141038d828e01614019565b97505060806141148d828e01614019565b96505060c06141258d828e01613cb8565b95505060e06141368d828e01613e04565b9450506101006141488d828e01613e04565b9350506101208b013567ffffffffffffffff81111561416a57614169613c34565b5b6141768d828e0161403b565b92509250509295989b9194979a5092959850565b61419381613c97565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006141c5838361418a565b60208301905092915050565b6000602082019050919050565b6141e781614199565b6141f181846141a4565b92506141fc826141af565b8060005b8381101561422d57815161421487826141b9565b965061421f836141d1565b925050600181019050614200565b505050505050565b61423e81613d0d565b82525050565b60e08201600082015161425a600085018261418a565b50602082015161426d60208501826141de565b50604082015161428060608501826141de565b50606082015161429360a085018261418a565b5060808201516142a660c0850182614235565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142d3826142ac565b6142dd81856142b7565b93506142ed818560208601613b8f565b6142f681613bb9565b840191505092915050565b600061024082019050614317600083018f613d43565b8181036020830152614329818e613bca565b9050614338604083018d613ea3565b614345606083018c613d43565b614352608083018b613d43565b61435f60a083018a614244565b61436d610180830189613d43565b61437b6101a0830188613d43565b6143896101c0830187613d19565b6143976101e0830186613d19565b6143a5610200830185613d19565b8181036102208301526143b881846142c8565b90509d9c50505050505050505050505050565b600080602083850312156143e2576143e1613c2f565b5b600083013567ffffffffffffffff811115614400576143ff613c34565b5b61440c85828601613fc3565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61444d81613c59565b82525050565b604082016000820151614469600085018261418a565b50602082015161447c6020850182614444565b50505050565b600061448e8383614453565b60408301905092915050565b6000602082019050919050565b60006144b282614418565b6144bc8185614423565b93506144c783614434565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b6000602082019050818103600083015261451f81846144a7565b905092915050565b6000806040838503121561453e5761453d613c2f565b5b600061454c85828601613c82565b925050602061455d85828601613c82565b9150509250929050565b60008083601f84011261457d5761457c613fb4565b5b8235905067ffffffffffffffff81111561459a57614599613fb9565b5b6020830191508360408202830111156145b6576145b5613fbe565b5b9250929050565b60008083601f8401126145d3576145d2613fb4565b5b8235905067ffffffffffffffff8111156145f0576145ef613fb9565b5b60208301915083602082028301111561460c5761460b613fbe565b5b9250929050565b600080600080600080606087890312156146305761462f613c2f565b5b600087013567ffffffffffffffff81111561464e5761464d613c34565b5b61465a89828a01614567565b9650965050602087013567ffffffffffffffff81111561467d5761467c613c34565b5b61468989828a01613fc3565b9450945050604087013567ffffffffffffffff8111156146ac576146ab613c34565b5b6146b889828a016145bd565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470482613bb9565b810181811067ffffffffffffffff82111715614723576147226146cc565b5b80604052505050565b6000614736613c25565b905061474282826146fb565b919050565b600067ffffffffffffffff821115614762576147616146cc565b5b61476b82613bb9565b9050602081019050919050565b82818337600083830152505050565b600061479a61479584614747565b61472c565b9050828152602081018484840111156147b6576147b56146c7565b5b6147c1848285614778565b509392505050565b600082601f8301126147de576147dd613fb4565b5b81356147ee848260208601614787565b91505092915050565b60006020828403121561480d5761480c613c2f565b5b600082013567ffffffffffffffff81111561482b5761482a613c34565b5b614837848285016147c9565b91505092915050565b6000606082019050818103600083015261485a8186613bca565b90506148696020830185613ea3565b6148766040830184613d43565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148c557607f821691505b6020821081036148d8576148d761487e565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614914601883613b7e565b915061491f826148de565b602082019050919050565b6000602082019050818103600083015261494381614907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498482613c97565b915061498f83613c97565b92508282019050808211156149a7576149a661494a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149e782613c97565b91506149f283613c97565b925082614a0257614a016149ad565b5b828204905092915050565b6000614a1882613c97565b9150614a2383613c97565b925082614a3357614a326149ad565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602183613b7e565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b0a82613c97565b9150614b1583613c97565b9250828202614b2381613c97565b91508282048414831517614b3a57614b3961494a565b5b5092915050565b6000606082019050614b566000830186613d43565b614b636020830185613d19565b614b706040830184613d19565b949350505050565b60008190508160005260206000209050919050565b60008154614b9a816148ad565b614ba481866142b7565b94506001821660008114614bbf5760018114614bd557614c08565b60ff198316865281151560200286019350614c08565b614bde85614b78565b60005b83811015614c0057815481890152600182019150602081019050614be1565b808801955050505b50505092915050565b600060a082019050614c266000830188613d19565b614c336020830187613d19565b614c406040830186613d43565b614c4d6060830185613d43565b8181036080830152614c5f8184614b8d565b90509695505050505050565b600081519050614c7a81613ca1565b92915050565b600060208284031215614c9657614c95613c2f565b5b6000614ca484828501614c6b565b91505092915050565b6000614cb882613c97565b9150614cc383613c97565b9250828203905081811115614cdb57614cda61494a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614d17601b83613b7e565b9150614d2282614ce1565b602082019050919050565b60006020820190508181036000830152614d4681614d0a565b9050919050565b6000606082019050614d626000830186613ea3565b614d6f6020830185613d43565b614d7c6040830184613d43565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614de0602b83613b7e565b9150614deb82614d84565b604082019050919050565b60006020820190508181036000830152614e0f81614dd3565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614e4c601583613b7e565b9150614e5782614e16565b602082019050919050565b60006020820190508181036000830152614e7b81614e3f565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614eb8601483613b7e565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614f24601783613b7e565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f90601a83613b7e565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614ffc601d83613b7e565b915061500782614fc6565b602082019050919050565b6000602082019050818103600083015261502b81614fef565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615068601e83613b7e565b915061507382615032565b602082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b600081905092915050565b60006150b5838561509e565b93506150c2838584614778565b82840190509392505050565b60006150db8284866150a9565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061511d601583613b7e565b9150615128826150e7565b602082019050919050565b6000602082019050818103600083015261514c81615110565b9050919050565b600061515e82613c97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151905761518f61494a565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584613c97565b61522a565b613c97565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361519b565b67ffffffffffffffff811115615375576153746146cc565b5b61537f82546148ad565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561546e5761543f81614b78565b615448846151bb565b81016020851015615457578190505b61546b615463856151bb565b8301826152a2565b50505b505050565b61547d8383615422565b67ffffffffffffffff811115615496576154956146cc565b5b6154a082546148ad565b6154ab82828561542d565b6000601f8311600181146154da57600084156154c8578287013590505b6154d28582615336565b86555061553a565b601f1984166154e886614b78565b60005b82811015615510578489013582556001820191506020850194506020810190506154eb565b8683101561552d5784890135615529601f891682615318565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b600061559f602583613b7e565b91506155aa82615543565b604082019050919050565b600060208201905081810360008301526155ce81615592565b9050919050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000615631602683613b7e565b915061563c826155d5565b604082019050919050565b6000602082019050818103600083015261566081615624565b9050919050565b6000813561567481613ca1565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6156b68461567d565b9350801983169250808416831791505092915050565b6156d582615234565b6156e86156e182615256565b835461568a565b8255505050565b600081356156fc81613c6b565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff6157258461567d565b9350801983169250808416831791505092915050565b600061575661575161574c84613c39565b61522a565b613c39565b9050919050565b60006157688261573b565b9050919050565b600061577a8261575d565b9050919050565b6000819050919050565b6157948261576f565b6157a76157a082615781565b8354615705565b8255505050565b6000810160008301806157c081615667565b90506157cc81846156cc565b5050506001810160208301806157e1816156ef565b90506157ed818461578b565b5050505050565b6157fe82826157ae565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b600061585e602283613b7e565b915061586982615802565b604082019050919050565b6000602082019050818103600083015261588d81615851565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126158bf576158be615894565b5b80830191505092915050565b6000819050919050565b6158de816158cb565b81146158e957600080fd5b50565b600081356158f9816158d5565b80915050919050565b600061591d615918615913846158cb565b61522a565b6158cb565b9050919050565b6000819050919050565b61593782615902565b61594a61594382615924565b835461568a565b8255505050565b6000808335600160200384360303811261596e5761596d615894565b5b80840192508235915067ffffffffffffffff8211156159905761598f615899565b5b6020830192506001820236038313156159ac576159ab61589e565b5b509250929050565b6159bf838383615352565b505050565b6000810160008301806159d6816158ec565b90506159e2818461592e565b50505060018101602083016159f78185615951565b615a028183866159b4565b505050505050565b615a1482826159c4565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b6000615a74602883613b7e565b9150615a7f82615a18565b604082019050919050565b60006020820190508181036000830152615aa381615a67565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615b06602783613b7e565b9150615b1182615aaa565b604082019050919050565b60006020820190508181036000830152615b3581615af9565b9050919050565b6000615b47826158cb565b9150615b52836158cb565b925082820190508281121560008312168382126000841215161715615b7a57615b7961494a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615bdc602c83613b7e565b9150615be782615b80565b604082019050919050565b60006020820190508181036000830152615c0b81615bcf565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615c6e602d83613b7e565b9150615c7982615c12565b604082019050919050565b60006020820190508181036000830152615c9d81615c61565b9050919050565b6000615cb08385613b7e565b9350615cbd838584614778565b615cc683613bb9565b840190509392505050565b60006020820190508181036000830152615cec818486615ca4565b90509392505050565b6000615d0082613b73565b615d0a818561509e565b9350615d1a818560208601613b8f565b80840191505092915050565b6000615d328284615cf5565b915081905092915050565b6000615d48826158cb565b9150615d53836158cb565b9250828203905081811260008412168282136000851215161715615d7a57615d7961494a565b5b92915050565b6000615d8b826158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008203615dbd57615dbc61494a565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615dfe601883613b7e565b9150615e0982615dc8565b602082019050919050565b60006020820190508181036000830152615e2d81615df1565b9050919050565b6000615e3f826158cb565b9150615e4a836158cb565b9250828202615e58816158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615e9057615e8f61494a565b5b8282058414831517615ea557615ea461494a565b5b5092915050565b6000615eb7826158cb565b9150615ec2836158cb565b925082615ed257615ed16149ad565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615f0b57615f0a61494a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615f72602683613b7e565b9150615f7d82615f16565b604082019050919050565b60006020820190508181036000830152615fa181615f65565b905091905056fea2646970667358221220faf895315a09bcb24dd1abf25a07e4361dd9f821afce5330ad7d41f7fcaa92d764736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106101665760003560e01c8063642b5bfb116100d1578063a230c5241161008a578063da66863a11610064578063da66863a146105b0578063dd62ed3e146105ed578063e5b4d8271461062a578063f8300fca1461065357610166565b8063a230c524146104ee578063a23362791461052b578063a9059cbb1461057357610166565b8063642b5bfb146103c557806370a08231146103f0578063883802741461042d57806395d89b411461046a578063975762b3146104955780639fbe7c73146104be57610166565b806323b872dd1161012357806323b872dd146102915780632d17c062146102ce578063313ce567146102f757806350cde8ef146103225780635daf08ca1461035f5780635ffc70041461039c57610166565b806306fdde031461016b578063095ea7b31461019657806311aee380146101d357806317906c2e146101fe57806317c182171461022957806318160ddd14610266575b600080fd5b34801561017757600080fd5b50610180610692565b60405161018d9190613c03565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190613ccd565b610724565b6040516101ca9190613d28565b60405180910390f35b3480156101df57600080fd5b506101e8610747565b6040516101f59190613d52565b60405180910390f35b34801561020a57600080fd5b5061021361074d565b6040516102209190613d52565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613d6d565b610753565b60405161025d9190613d28565b60405180910390f35b34801561027257600080fd5b5061027b611135565b6040516102889190613d52565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190613d9a565b61113f565b6040516102c59190613d28565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190613e19565b61117c565b005b34801561030357600080fd5b5061030c6111a5565b6040516103199190613e88565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190613d6d565b6111ae565b6040516103569190613c03565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613d6d565b61125a565b6040516103939190613eb2565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be9190613d9a565b61128d565b005b3480156103d157600080fd5b506103da6112bc565b6040516103e79190613d52565b60405180910390f35b3480156103fc57600080fd5b5061041760048036038101906104129190613ecd565b6112c2565b6040516104249190613d52565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190613efa565b61130a565b6040516104619190613d28565b60405180910390f35b34801561047657600080fd5b5061047f6113a5565b60405161048c9190613c03565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190613f4d565b611437565b005b6104d860048036038101906104d39190614091565b61148a565b6040516104e59190613d52565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190613ecd565b611944565b6040516105229190613d28565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190613d6d565b611964565b60405161056a9c9b9a99989796959493929190614301565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613ccd565b611bde565b6040516105a79190613d28565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d291906143cb565b611c1b565b6040516105e49190614505565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190614527565b611d04565b6040516106219190613d52565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190614613565b611d8b565b005b34801561065f57600080fd5b5061067a600480360381019061067591906147f7565b61225e565b60405161068993929190614840565b60405180910390f35b6060600380546106a1906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546106cd906148ad565b801561071a5780601f106106ef5761010080835404028352916020019161071a565b820191906000526020600020905b8154815290600101906020018083116106fd57829003601f168201915b5050505050905090565b60008061072f612346565b905061073c81858561234e565b600191505092915050565b60065481565b600a5481565b600080600d600084815260200190815260200160002090506000151581600f0160009054906101000a900460ff161515146107c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ba9061492a565b60405180910390fd5b600080600080600090505b846005015481101561083f5784600401600082815260200190815260200160002091508160010160009054906101000a900460ff161561081f578160020154846108189190614979565b9350610832565b81600201548361082f9190614979565b92505b80806001019150506107ce565b506002846003015461085191906149dc565b8361085c9190614979565b92506002846003015461086f91906149dc565b8261087a9190614979565b915060006002856003015461088f9190614a0d565b146108a4576001836108a19190614979565b92505b83600e01544211806108c757506108b9611135565b82846108c59190614979565b145b610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90614ab0565b60405180910390fd5b836006016001016000600281106109205761091f614ad0565b5b015461092a611135565b6109349190614aff565b82846109409190614979565b8560060160010160016002811061095a57610959614ad0565b5b01546109669190614aff565b11610a9657600184600f0160006101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81866000806040516109bc93929190614b41565b60405180910390a183600f0160029054906101000a900460ff1615610a89578360020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58660008686896010016040518663ffffffff1660e01b8152600401610a44959493929190614c11565b6020604051808303816000875af1158015610a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a879190614c80565b505b6000945050505050611130565b83600601600301600060028110610ab057610aaf614ad0565b5b01548284610abe9190614979565b610ac89190614aff565b84600601600301600160028110610ae257610ae1614ad0565b5b015484610aef9190614aff565b10159450600184600f0160006101000a81548160ff0219169083151502179055508484600f0160016101000a81548160ff0219169083151502179055507fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8186866001604051610b6093929190614b41565b60405180910390a1600085610b755782610b77565b835b905060008060005b8760050154811015610c7f5787600401600082815260200190815260200160002094508460010160009054906101000a900460ff16151589151514610c72576000606489600601600501548760020154610bd99190614aff565b610be391906149dc565b90508860060160060160009054906101000a900460ff1615610c4157610c2e8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083612360565b8084610c3a9190614979565b9350610c70565b610c6f8660030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612585565b5b505b8080600101915050610b7f565b508715610e815760028760030154610c9791906149dc565b82610ca29190614979565b915060005b8760050154811015610d8d5787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610cff57508460010160009054906101000a900460ff161515891515145b15610d805760006064896006016005015486886002015487610d219190614aff565b610d2b91906149dc565b610d359190614aff565b610d3f91906149dc565b90508083610d4d9190614979565b9250610d7e308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610ca7565b5060008183610d9c9190614cad565b9050600060028960030154610db19190614a0d565b14610dc657600181610dc39190614979565b90505b610e7a886001018054610dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610e04906148ad565b8015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b50505050508260028b60030154610e6891906149dc565b610e729190614979565b600080612607565b5050610f99565b866003015482610e919190614979565b915060005b8760050154811015610f975787600401600082815260200190815260200160002094508760060160060160009054906101000a900460ff168015610eee57508460010160009054906101000a900460ff161515891515145b15610f8a5760006064896006016005015460028b60030154610f1091906149dc565b87610f1b9190614cad565b886002015487610f2b9190614aff565b610f3591906149dc565b610f3f9190614aff565b610f4991906149dc565b90508083610f579190614979565b9250610f88308760030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612360565b505b8080600101915050610e96565b505b60005b6006548110156110625760006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610fe8611135565b610ff1836112c2565b8b600d01546110009190614aff565b61100a91906149dc565b90508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611052573d6000803e3d6000fd5b5050508080600101915050610f9c565b5086600f0160029054906101000a900460ff1615611128578660020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d589600189898c6010016040518663ffffffff1660e01b81526004016110e3959493929190614c11565b6020604051808303816000875af1158015611102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111269190614c80565b505b505050505050505b919050565b6000600254905090565b60006040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390614d2d565b60405180910390fd5b6000600d6000858152602001908152602001600020905061119f813385856131af565b50505050565b60006009905090565b600981815481106111be57600080fd5b9060005260206000200160009150905080546111d9906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611205906148ad565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b505050505081565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112988333836132a5565b6112b78383836112a88787611d04565b6112b29190614979565b61234e565b505050565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061132b33858561131c3389611d04565b6113269190614979565b61234e565b8373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161136893929190614d4d565b600060405180830381600087803b15801561138257600080fd5b505af1158015611396573d6000803e3d6000fd5b50505050600190509392505050565b6060600480546113b4906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546113e0906148ad565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905090565b6000600d60008681526020019081526020016000209050826114598533611d04565b101561146c576114698433611d04565b92505b6114778433856132a5565b611483818585856131af565b5050505050565b60008034116114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590614df6565b60405180910390fd5b6001891015611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990614e62565b60405180910390fd5b651cae8c13e00089111561155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614ece565b60405180910390fd5b8760016002811061156f5761156e614ad0565b5b6020020135600f60006002811061158957611588614ad0565b5b01546115959190614aff565b886000600281106115a9576115a8614ad0565b5b6020020135600f6001600281106115c3576115c2614ad0565b5b01546115cf9190614aff565b1015611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790614f3a565b60405180910390fd5b8760016002811061162457611623614ad0565b5b60200201358860006002811061163d5761163c614ad0565b5b60200201351115611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167a90614fa6565b60405180910390fd5b8660016002811061169757611696614ad0565b5b6020020135876000600281106116b0576116af614ad0565b5b602002013511156116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed90615012565b60405180910390fd5b606486111561173a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117319061507e565b60405180910390fd5b600060088c8c60405161174e9291906150ce565b9081526020016040518091039020905060008160020180549050036117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179f90615133565b60405180910390fd5b600e60008154809291906117bb90615153565b9190505591506000600d60008481526020019081526020016000209050338160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508c8c82600101918261182e929190615352565b503481600d0181905550898160060160010190600261184e929190613b16565b508881600601600301906002611865929190613b16565b50878160060160050181905550868160060160060160006101000a81548160ff0219169083151502179055508a81600601600001819055508a426118a99190614979565b81600e01819055508281600001819055508581600f0160026101000a81548160ff02191690831515021790555084848260100191826118e9929190615473565b506118f43034613339565b3481600301819055507f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8360405161192c9190613d52565b60405180910390a150509a9950505050505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b600d60205280600052604060002060009150905080600001549080600101805461198d906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546119b9906148ad565b8015611a065780601f106119db57610100808354040283529160200191611a06565b820191906000526020600020905b8154815290600101906020018083116119e957829003601f168201915b5050505050908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806003015490806005015490806006016040518060a00160405290816000820154815260200160018201600280602002604051908101604052809291908260028015611a93576020028201915b815481526020019060010190808311611a7f575b5050505050815260200160038201600280602002604051908101604052809291908260028015611ad8576020028201915b815481526020019060010190808311611ac4575b50505050508152602001600582015481526020016006820160009054906101000a900460ff1615151515815250509080600d01549080600e01549080600f0160009054906101000a900460ff169080600f0160019054906101000a900460ff169080600f0160029054906101000a900460ff1690806010018054611b5b906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054611b87906148ad565b8015611bd45780601f10611ba957610100808354040283529160200191611bd4565b820191906000526020600020905b815481529060010190602001808311611bb757829003601f168201915b505050505090508c565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614d2d565b60405180910390fd5b6060600060088484604051611c319291906150ce565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b82821015611cf75783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190611c65565b5050505091505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008686905011611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc8906155b5565b60405180910390fd5b600a6000815480929190611de490615153565b91905055506009848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182611e26929190615352565b50600060088585604051611e3b9291906150ce565b908152602001604051809103902090506000816002018054905014611e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8c90615647565b60405180910390fd5b338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484826000019182611eeb929190615352565b50600080600090505b88889050811015611f8a57888882818110611f1257611f11614ad0565b5b9050604002016000013582611f279190614979565b915082600201898983818110611f4057611f3f614ad0565b5b90506040020190806001815401808255809150506001900390600052602060002090600202016000909190919091508181611f7b91906157f4565b50508080600101915050611ef4565b50620f42408114611fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc790615874565b60405180910390fd5b60005b8484905081101561204b5782600301858583818110611ff557611ff4614ad0565b5b905060200281019061200791906158a3565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161203c9190615a0a565b50508080600101915050611fd3565b5060008060005b846003018054905081101561216f57600085600301828154811061207957612078614ad0565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790615a8a565b60405180910390fd5b620f4240811315612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d90615b1c565b60405180910390fd5b600081131561215257808461214b9190615b3c565b9350612161565b808361215e9190615b3c565b92505b508080600101915050612052565b50620f42408213156121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90615bf2565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc0811215612219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221090615c84565b60405180910390fd5b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af249727888860405161224a929190615cd1565b60405180910390a150505050505050505050565b600881805160208101820180518482526020830160208501208183528095505050505050600091509050806000018054612297906148ad565b80601f01602080910402602001604051908101604052809291908181526020018280546122c3906148ad565b80156123105780601f106122e557610100808354040283529160200191612310565b820191906000526020600020905b8154815290600101906020018083116122f357829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600033905090565b61235b83838360016133bb565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123b25780600260008282546123a69190614979565b92505081905550612485565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561243e578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161243593929190614d4d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ce578060026000828254039250508190555061251b565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125789190613d52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125f75760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016125ee9190613eb2565b60405180910390fd5b61260382600083612360565b5050565b6000600c54821061261a578390506131a7565b600060088660405161262c9190615d26565b90815260200160405180910390209050600081600201805490500361265457849150506131a7565b60005b816003018054905081101561278857600082600301828154811061267e5761267d614ad0565b5b906000526020600020906002020160000154121561277b5761276d878360030183815481106126b0576126af614ad0565b5b9060005260206000209060020201604051806040016040529081600082015481526020016001820180546126e3906148ad565b80601f016020809104026020016040519081016040528092919081815260200182805461270f906148ad565b801561275c5780601f106127315761010080835404028352916020019161275c565b820191906000526020600020905b81548152906001019060200180831161273f57829003601f168201915b505050505081525050888888613592565b866127789190615d3d565b95505b8080600101915050612657565b5060005b81600301805490508110156128bd5760008260030182815481106127b3576127b2614ad0565b5b90600052602060002090600202016000015413156128b0576128a2878360030183815481106127e5576127e4614ad0565b5b906000526020600020906002020160405180604001604052908160008201548152602001600182018054612818906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612844906148ad565b80156128915780601f1061286657610100808354040283529160200191612891565b820191906000526020600020905b81548152906001019060200180831161287457829003601f168201915b505050505081525050888888613592565b866128ad9190615d3d565b95505b808060010191505061278c565b506000851315612ba957612b88816040518060a00160405290816000820180546128e6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612912906148ad565b801561295f5780601f106129345761010080835404028352916020019161295f565b820191906000526020600020905b81548152906001019060200180831161294257829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612a755783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906129e3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612b70578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612adf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612b0b906148ad565b8015612b585780601f10612b2d57610100808354040283529160200191612b58565b820191906000526020600020905b815481529060010190602001808311612b3b57829003601f168201915b50505050508152505081526020019060010190612aa2565b5050505081526020016004820154815250508661375d565b5084816004016000828254612b9d9190614979565b925050819055506131a5565b6000858260040154612bbb9190615b3c565b12612eac57612e81816040518060a0016040529081600082018054612bdf906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0b906148ad565b8015612c585780601f10612c2d57610100808354040283529160200191612c58565b820191906000526020600020905b815481529060010190602001808311612c3b57829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015612d6e5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612cdc565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015612e69578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054612dd8906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612e04906148ad565b8015612e515780601f10612e2657610100808354040283529160200191612e51565b820191906000526020600020905b815481529060010190602001808311612e3457829003601f168201915b50505050508152505081526020019060010190612d9b565b5050505081526020016004820154815250508661375d565b915084612e8d90615d80565b816004016000828254612ea09190614cad565b925050819055506131a4565b848160040154612ebc9190615b3c565b915061318c816040518060a0016040529081600082018054612edd906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054612f09906148ad565b8015612f565780601f10612f2b57610100808354040283529160200191612f56565b820191906000526020600020905b815481529060010190602001808311612f3957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561306c5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190612fda565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156131675783829060005260206000209060020201604051806040016040529081600082015481526020016001820180546130d6906148ad565b80601f0160208091040260200160405190810160405280929190818152602001828054613102906148ad565b801561314f5780601f106131245761010080835404028352916020019161314f565b820191906000526020600020905b81548152906001019060200180831161313257829003601f168201915b50505050508152505081526020019060010190613099565b505050508152602001600482015481525050826004015461318790615d80565b61375d565b826131979190615b3c565b9150600081600401819055505b5b505b949350505050565b83600e01544211156131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90615e14565b60405180910390fd5b600084600501600081548092919061320d90615153565b91905055905060008560040160008381526020019081526020016000209050848160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828160010160006101000a81548160ff021916908315150217905550838160020181905550818160000181905550505050505050565b60006132b18484611d04565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146133335781811015613323578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161331a93929190614d4d565b60405180910390fd5b613332848484840360006133bb565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133ab5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016133a29190613eb2565b60405180910390fd5b6133b760008383612360565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361342d5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016134249190613eb2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361349f5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016134969190613eb2565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561358c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516135839190613d52565b60405180910390a35b50505050565b6000620f42408560000151856135a89190615e34565b6135b29190615eac565b9050600085602001515103613614576000811215613605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135fc90615f88565b60405180910390fd5b61360f3082612585565b613754565b6000600b876040516136269190615d26565b908152602001604051809103902086602001516040516136469190615d26565b908152602001604051809103902054905083156136b357600082121561368e578061367090615d80565b8213613685578061368090615d80565b613687565b815b91506136b2565b8061369890615d80565b82126136ad57806136a890615d80565b6136af565b815b91505b5b60006136ec87602001518487806136da57506000871480156136d9575060008a60000151125b5b6001886136e79190614979565b612607565b905080836136fa9190615d3d565b925082600b8960405161370d9190615d26565b9081526020016040518091039020886020015160405161372d9190615d26565b9081526020016040518091039020600082825461374a9190615b3c565b9250508190555050505b95945050505050565b60008060005b8460400151518110156138b75760008560400151828151811061378957613788614ad0565b5b6020026020010151602001519050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166138a95780600560006006600081548092919061380090615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080600101915050613763565b5060005b846040015151811015613b0e576000856040015182815181106138e1576138e0614ad0565b5b60200260200101519050600060018760400151516138ff9190614cad565b83101561393957620f424082600001518761391a9190615e34565b6139249190615eac565b905080846139329190615b3c565b9350613948565b83866139459190615d3d565b90505b6000811315613a835761396030836020015183612360565b60076000836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a7e57816020015160056000600660008154809291906139d190615153565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b613aff565b80613a8d90615d80565b613a9a83602001516112c2565b1015613ae557613aad82602001516112c2565b81613ab89190615b3c565b85613ac39190615b3c565b9450613ae0826020015130613adb85602001516112c2565b612360565b613afe565b613afd82602001513083613af890615d80565b612360565b5b5b505080806001019150506138bb565b505092915050565b8260028101928215613b45579160200282015b82811115613b44578235825591602001919060010190613b29565b5b509050613b529190613b56565b5090565b5b80821115613b6f576000816000905550600101613b57565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bad578082015181840152602081019050613b92565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd582613b73565b613bdf8185613b7e565b9350613bef818560208601613b8f565b613bf881613bb9565b840191505092915050565b60006020820190508181036000830152613c1d8184613bca565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c6482613c39565b9050919050565b613c7481613c59565b8114613c7f57600080fd5b50565b600081359050613c9181613c6b565b92915050565b6000819050919050565b613caa81613c97565b8114613cb557600080fd5b50565b600081359050613cc781613ca1565b92915050565b60008060408385031215613ce457613ce3613c2f565b5b6000613cf285828601613c82565b9250506020613d0385828601613cb8565b9150509250929050565b60008115159050919050565b613d2281613d0d565b82525050565b6000602082019050613d3d6000830184613d19565b92915050565b613d4c81613c97565b82525050565b6000602082019050613d676000830184613d43565b92915050565b600060208284031215613d8357613d82613c2f565b5b6000613d9184828501613cb8565b91505092915050565b600080600060608486031215613db357613db2613c2f565b5b6000613dc186828701613c82565b9350506020613dd286828701613c82565b9250506040613de386828701613cb8565b9150509250925092565b613df681613d0d565b8114613e0157600080fd5b50565b600081359050613e1381613ded565b92915050565b600080600060608486031215613e3257613e31613c2f565b5b6000613e4086828701613cb8565b9350506020613e5186828701613cb8565b9250506040613e6286828701613e04565b9150509250925092565b600060ff82169050919050565b613e8281613e6c565b82525050565b6000602082019050613e9d6000830184613e79565b92915050565b613eac81613c59565b82525050565b6000602082019050613ec76000830184613ea3565b92915050565b600060208284031215613ee357613ee2613c2f565b5b6000613ef184828501613c82565b91505092915050565b600080600060608486031215613f1357613f12613c2f565b5b6000613f2186828701613c82565b9350506020613f3286828701613cb8565b9250506040613f4386828701613cb8565b9150509250925092565b60008060008060808587031215613f6757613f66613c2f565b5b6000613f7587828801613cb8565b9450506020613f8687828801613c82565b9350506040613f9787828801613cb8565b9250506060613fa887828801613e04565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112613fd957613fd8613fb4565b5b8235905067ffffffffffffffff811115613ff657613ff5613fb9565b5b60208301915083600182028301111561401257614011613fbe565b5b9250929050565b60008190508260206002028201111561403557614034613fbe565b5b92915050565b60008083601f84011261405157614050613fb4565b5b8235905067ffffffffffffffff81111561406e5761406d613fb9565b5b60208301915083600182028301111561408a57614089613fbe565b5b9250929050565b6000806000806000806000806000806101408b8d0312156140b5576140b4613c2f565b5b60008b013567ffffffffffffffff8111156140d3576140d2613c34565b5b6140df8d828e01613fc3565b9a509a505060206140f28d828e01613cb8565b98505060406141038d828e01614019565b97505060806141148d828e01614019565b96505060c06141258d828e01613cb8565b95505060e06141368d828e01613e04565b9450506101006141488d828e01613e04565b9350506101208b013567ffffffffffffffff81111561416a57614169613c34565b5b6141768d828e0161403b565b92509250509295989b9194979a5092959850565b61419381613c97565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006141c5838361418a565b60208301905092915050565b6000602082019050919050565b6141e781614199565b6141f181846141a4565b92506141fc826141af565b8060005b8381101561422d57815161421487826141b9565b965061421f836141d1565b925050600181019050614200565b505050505050565b61423e81613d0d565b82525050565b60e08201600082015161425a600085018261418a565b50602082015161426d60208501826141de565b50604082015161428060608501826141de565b50606082015161429360a085018261418a565b5060808201516142a660c0850182614235565b50505050565b600081519050919050565b600082825260208201905092915050565b60006142d3826142ac565b6142dd81856142b7565b93506142ed818560208601613b8f565b6142f681613bb9565b840191505092915050565b600061024082019050614317600083018f613d43565b8181036020830152614329818e613bca565b9050614338604083018d613ea3565b614345606083018c613d43565b614352608083018b613d43565b61435f60a083018a614244565b61436d610180830189613d43565b61437b6101a0830188613d43565b6143896101c0830187613d19565b6143976101e0830186613d19565b6143a5610200830185613d19565b8181036102208301526143b881846142c8565b90509d9c50505050505050505050505050565b600080602083850312156143e2576143e1613c2f565b5b600083013567ffffffffffffffff811115614400576143ff613c34565b5b61440c85828601613fc3565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61444d81613c59565b82525050565b604082016000820151614469600085018261418a565b50602082015161447c6020850182614444565b50505050565b600061448e8383614453565b60408301905092915050565b6000602082019050919050565b60006144b282614418565b6144bc8185614423565b93506144c783614434565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b6000602082019050818103600083015261451f81846144a7565b905092915050565b6000806040838503121561453e5761453d613c2f565b5b600061454c85828601613c82565b925050602061455d85828601613c82565b9150509250929050565b60008083601f84011261457d5761457c613fb4565b5b8235905067ffffffffffffffff81111561459a57614599613fb9565b5b6020830191508360408202830111156145b6576145b5613fbe565b5b9250929050565b60008083601f8401126145d3576145d2613fb4565b5b8235905067ffffffffffffffff8111156145f0576145ef613fb9565b5b60208301915083602082028301111561460c5761460b613fbe565b5b9250929050565b600080600080600080606087890312156146305761462f613c2f565b5b600087013567ffffffffffffffff81111561464e5761464d613c34565b5b61465a89828a01614567565b9650965050602087013567ffffffffffffffff81111561467d5761467c613c34565b5b61468989828a01613fc3565b9450945050604087013567ffffffffffffffff8111156146ac576146ab613c34565b5b6146b889828a016145bd565b92509250509295509295509295565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61470482613bb9565b810181811067ffffffffffffffff82111715614723576147226146cc565b5b80604052505050565b6000614736613c25565b905061474282826146fb565b919050565b600067ffffffffffffffff821115614762576147616146cc565b5b61476b82613bb9565b9050602081019050919050565b82818337600083830152505050565b600061479a61479584614747565b61472c565b9050828152602081018484840111156147b6576147b56146c7565b5b6147c1848285614778565b509392505050565b600082601f8301126147de576147dd613fb4565b5b81356147ee848260208601614787565b91505092915050565b60006020828403121561480d5761480c613c2f565b5b600082013567ffffffffffffffff81111561482b5761482a613c34565b5b614837848285016147c9565b91505092915050565b6000606082019050818103600083015261485a8186613bca565b90506148696020830185613ea3565b6148766040830184613d43565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806148c557607f821691505b6020821081036148d8576148d761487e565b5b50919050565b7f506f6f6c20697320616c7265616479207265736f6c7665640000000000000000600082015250565b6000614914601883613b7e565b915061491f826148de565b602082019050919050565b6000602082019050818103600083015261494381614907565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061498482613c97565b915061498f83613c97565b92508282019050808211156149a7576149a661494a565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006149e782613c97565b91506149f283613c97565b925082614a0257614a016149ad565b5b828204905092915050565b6000614a1882613c97565b9150614a2383613c97565b925082614a3357614a326149ad565b5b828206905092915050565b7f506f6f6c20656e642074696d6520686173206e6f74207965742061727269766560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a9a602183613b7e565b9150614aa582614a3e565b604082019050919050565b60006020820190508181036000830152614ac981614a8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b0a82613c97565b9150614b1583613c97565b9250828202614b2381613c97565b91508282048414831517614b3a57614b3961494a565b5b5092915050565b6000606082019050614b566000830186613d43565b614b636020830185613d19565b614b706040830184613d19565b949350505050565b60008190508160005260206000209050919050565b60008154614b9a816148ad565b614ba481866142b7565b94506001821660008114614bbf5760018114614bd557614c08565b60ff198316865281151560200286019350614c08565b614bde85614b78565b60005b83811015614c0057815481890152600182019150602081019050614be1565b808801955050505b50505092915050565b600060a082019050614c266000830188613d19565b614c336020830187613d19565b614c406040830186613d43565b614c4d6060830185613d43565b8181036080830152614c5f8184614b8d565b90509695505050505050565b600081519050614c7a81613ca1565b92915050565b600060208284031215614c9657614c95613c2f565b5b6000614ca484828501614c6b565b91505092915050565b6000614cb882613c97565b9150614cc383613c97565b9250828203905081811115614cdb57614cda61494a565b5b92915050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000614d17601b83613b7e565b9150614d2282614ce1565b602082019050919050565b60006020820190508181036000830152614d4681614d0a565b9050919050565b6000606082019050614d626000830186613ea3565b614d6f6020830185613d43565b614d7c6040830184613d43565b949350505050565b7f46656520697320726571756972656420746f20696e6974696174652076616c6960008201527f646174696f6e20706f6f6c000000000000000000000000000000000000000000602082015250565b6000614de0602b83613b7e565b9150614deb82614d84565b604082019050919050565b60006020820190508181036000830152614e0f81614dd3565b9050919050565b7f4475726174696f6e20697320746f6f2073686f72740000000000000000000000600082015250565b6000614e4c601583613b7e565b9150614e5782614e16565b602082019050919050565b60006020820190508181036000830152614e7b81614e3f565b9050919050565b7f4475726174696f6e20697320746f6f206c6f6e67000000000000000000000000600082015250565b6000614eb8601483613b7e565b9150614ec382614e82565b602082019050919050565b60006020820190508181036000830152614ee781614eab565b9050919050565b7f51756f72756d2069732062656c6f77206d696e696d756d000000000000000000600082015250565b6000614f24601783613b7e565b9150614f2f82614eee565b602082019050919050565b60006020820190508181036000830152614f5381614f17565b9050919050565b7f51756f72756d2069732067726561746572207468616e206f6e65000000000000600082015250565b6000614f90601a83613b7e565b9150614f9b82614f5a565b602082019050919050565b60006020820190508181036000830152614fbf81614f83565b9050919050565b7f57696e20726174696f2069732067726561746572207468616e206f6e65000000600082015250565b6000614ffc601d83613b7e565b915061500782614fc6565b602082019050919050565b6000602082019050818103600083015261502b81614fef565b9050919050565b7f42696e64696e672070657263656e74206d757374206265203c3d203130300000600082015250565b6000615068601e83613b7e565b915061507382615032565b602082019050919050565b600060208201905081810360008301526150978161505b565b9050919050565b600081905092915050565b60006150b5838561509e565b93506150c2838584614778565b82840190509392505050565b60006150db8284866150a9565b91508190509392505050565b7f54617267657420706f7374206e6f7420666f756e640000000000000000000000600082015250565b600061511d601583613b7e565b9150615128826150e7565b602082019050919050565b6000602082019050818103600083015261514c81615110565b9050919050565b600061515e82613c97565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151905761518f61494a565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026152087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826151cb565b61521286836151cb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061524f61524a61524584613c97565b61522a565b613c97565b9050919050565b6000819050919050565b61526983615234565b61527d61527582615256565b8484546151d8565b825550505050565b600090565b615292615285565b61529d818484615260565b505050565b5b818110156152c1576152b660008261528a565b6001810190506152a3565b5050565b601f821115615306576152d7816151a6565b6152e0846151bb565b810160208510156152ef578190505b6153036152fb856151bb565b8301826152a2565b50505b505050565b600082821c905092915050565b60006153296000198460080261530b565b1980831691505092915050565b60006153428383615318565b9150826002028217905092915050565b61535c838361519b565b67ffffffffffffffff811115615375576153746146cc565b5b61537f82546148ad565b61538a8282856152c5565b6000601f8311600181146153b957600084156153a7578287013590505b6153b18582615336565b865550615419565b601f1984166153c7866151a6565b60005b828110156153ef578489013582556001820191506020850194506020810190506153ca565b8683101561540c5784890135615408601f891682615318565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f82111561546e5761543f81614b78565b615448846151bb565b81016020851015615457578190505b61546b615463856151bb565b8301826152a2565b50505b505050565b61547d8383615422565b67ffffffffffffffff811115615496576154956146cc565b5b6154a082546148ad565b6154ab82828561542d565b6000601f8311600181146154da57600084156154c8578287013590505b6154d28582615336565b86555061553a565b601f1984166154e886614b78565b60005b82811015615510578489013582556001820191506020850194506020810190506154eb565b8683101561552d5784890135615529601f891682615318565b8355505b6001600288020188555050505b50505050505050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b600061559f602583613b7e565b91506155aa82615543565b604082019050919050565b600060208201905081810360008301526155ce81615592565b9050919050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000615631602683613b7e565b915061563c826155d5565b604082019050919050565b6000602082019050818103600083015261566081615624565b9050919050565b6000813561567481613ca1565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6156b68461567d565b9350801983169250808416831791505092915050565b6156d582615234565b6156e86156e182615256565b835461568a565b8255505050565b600081356156fc81613c6b565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff6157258461567d565b9350801983169250808416831791505092915050565b600061575661575161574c84613c39565b61522a565b613c39565b9050919050565b60006157688261573b565b9050919050565b600061577a8261575d565b9050919050565b6000819050919050565b6157948261576f565b6157a76157a082615781565b8354615705565b8255505050565b6000810160008301806157c081615667565b90506157cc81846156cc565b5050506001810160208301806157e1816156ef565b90506157ed818461578b565b5050505050565b6157fe82826157ae565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b600061585e602283613b7e565b915061586982615802565b604082019050919050565b6000602082019050818103600083015261588d81615851565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126158bf576158be615894565b5b80830191505092915050565b6000819050919050565b6158de816158cb565b81146158e957600080fd5b50565b600081356158f9816158d5565b80915050919050565b600061591d615918615913846158cb565b61522a565b6158cb565b9050919050565b6000819050919050565b61593782615902565b61594a61594382615924565b835461568a565b8255505050565b6000808335600160200384360303811261596e5761596d615894565b5b80840192508235915067ffffffffffffffff8211156159905761598f615899565b5b6020830192506001820236038313156159ac576159ab61589e565b5b509250929050565b6159bf838383615352565b505050565b6000810160008301806159d6816158ec565b90506159e2818461592e565b50505060018101602083016159f78185615951565b615a028183866159b4565b505050505050565b615a1482826159c4565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b6000615a74602883613b7e565b9150615a7f82615a18565b604082019050919050565b60006020820190508181036000830152615aa381615a67565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b6000615b06602783613b7e565b9150615b1182615aaa565b604082019050919050565b60006020820190508181036000830152615b3581615af9565b9050919050565b6000615b47826158cb565b9150615b52836158cb565b925082820190508281121560008312168382126000841215161715615b7a57615b7961494a565b5b92915050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b6000615bdc602c83613b7e565b9150615be782615b80565b604082019050919050565b60006020820190508181036000830152615c0b81615bcf565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b6000615c6e602d83613b7e565b9150615c7982615c12565b604082019050919050565b60006020820190508181036000830152615c9d81615c61565b9050919050565b6000615cb08385613b7e565b9350615cbd838584614778565b615cc683613bb9565b840190509392505050565b60006020820190508181036000830152615cec818486615ca4565b90509392505050565b6000615d0082613b73565b615d0a818561509e565b9350615d1a818560208601613b8f565b80840191505092915050565b6000615d328284615cf5565b915081905092915050565b6000615d48826158cb565b9150615d53836158cb565b9250828203905081811260008412168282136000851215161715615d7a57615d7961494a565b5b92915050565b6000615d8b826158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008203615dbd57615dbc61494a565b5b816000039050919050565b7f506f6f6c20656e642074696d6520686173207061737365640000000000000000600082015250565b6000615dfe601883613b7e565b9150615e0982615dc8565b602082019050919050565b60006020820190508181036000830152615e2d81615df1565b9050919050565b6000615e3f826158cb565b9150615e4a836158cb565b9250828202615e58816158cb565b91507f80000000000000000000000000000000000000000000000000000000000000008414600084121615615e9057615e8f61494a565b5b8282058414831517615ea557615ea461494a565b5b5092915050565b6000615eb7826158cb565b9150615ec2836158cb565b925082615ed257615ed16149ad565b5b600160000383147f800000000000000000000000000000000000000000000000000000000000000083141615615f0b57615f0a61494a565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b6000615f72602683613b7e565b9150615f7d82615f16565b604082019050919050565b60006020820190508181036000830152615fa181615f65565b905091905056fea2646970667358221220faf895315a09bcb24dd1abf25a07e4361dd9f821afce5330ad7d41f7fcaa92d764736f6c63430008180033", + "bytecode": "0x60806040523480156200001157600080fd5b506040516200439c3803806200439c8339818101604052810190620000379190620003bb565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000154919062000482565b600060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b8152600401620001e5919062000482565b600060405180830381600087803b1580156200020057600080fd5b505af115801562000215573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000276919062000482565b600060405180830381600087803b1580156200029157600080fd5b505af1158015620002a6573d6000803e3d6000fd5b505050505050506200049f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002e582620002b8565b9050919050565b6000620002f982620002d8565b9050919050565b6200030b81620002ec565b81146200031757600080fd5b50565b6000815190506200032b8162000300565b92915050565b60006200033e82620002d8565b9050919050565b620003508162000331565b81146200035c57600080fd5b50565b600081519050620003708162000345565b92915050565b60006200038382620002d8565b9050919050565b620003958162000376565b8114620003a157600080fd5b50565b600081519050620003b5816200038a565b92915050565b600080600060608486031215620003d757620003d6620002b3565b5b6000620003e7868287016200031a565b9350506020620003fa868287016200035f565b92505060406200040d86828701620003a4565b9150509250925092565b6000819050919050565b6000620004426200043c6200043684620002b8565b62000417565b620002b8565b9050919050565b6000620004568262000421565b9050919050565b60006200046a8262000449565b9050919050565b6200047c816200045d565b82525050565b600060208201905062000499600083018462000471565b92915050565b613eed80620004af6000396000f3fe6080604052600436106101c25760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f1461065e578063e5b4d82714610687578063f8300fca146106b0578063fcb4888e146106ef576101c2565b8063a233627914610578578063da66863a146105bb578063dc00bbfe146105f8578063dd62ed3e14610621576101c2565b80639dc29fac116100d15780639dc29fac146104b95780639fbe7c73146104e25780639fd0987214610512578063a230c5241461053b576101c2565b8063883802741461042a5780638ce516da14610467578063975762b314610490576101c2565b806340c10f19116101645780635ffc70041161013e5780635ffc700414610370578063642b5bfb1461039957806370a08231146103c457806378e21c6e14610401576101c2565b806340c10f19146102e15780635c253c0b1461030a5780635daf08ca14610333576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc610718565b6040516101e99190611d99565b60405180910390f35b3480156101fe57600080fd5b5061020761071e565b6040516102149190611d99565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611df4565b6107b6565b6040516102519190611e3c565b60405180910390f35b34801561026657600080fd5b5061026f61085d565b60405161027c9190611d99565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190611f46565b6108f4565b005b6102b6610a5a565b005b3480156102c457600080fd5b506102df60048036038101906102da9190611ff5565b610b60565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612048565b610c43565b005b34801561031657600080fd5b50610331600480360381019061032c91906121c9565b610dbc565b005b34801561033f57600080fd5b5061035a60048036038101906103559190611df4565b610df6565b6040516103679190612221565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061223c565b610e29565b005b3480156103a557600080fd5b506103ae610ebd565b6040516103bb9190611d99565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061228f565b610f55565b6040516103f89190611d99565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906122bc565b610ff9565b005b34801561043657600080fd5b50610451600480360381019061044c919061230f565b611039565b60405161045e9190611e3c565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061223c565b611159565b005b34801561049c57600080fd5b506104b760048036038101906104b29190612362565b6112d5565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612048565b611397565b005b6104fc60048036038101906104f79190612441565b611510565b6040516105099190611d99565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612570565b6115d5565b005b34801561054757600080fd5b50610562600480360381019061055d919061228f565b61167f565b60405161056f9190611e3c565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190611df4565b61169f565b6040516105b2979695949392919061284b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906128cc565b611772565b6040516105ef9190612a06565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611df4565b61181f565b005b34801561062d57600080fd5b5061064860048036038101906106439190612a28565b611859565b6040516106559190611d99565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061223c565b611900565b005b34801561069357600080fd5b506106ae60048036038101906106a99190612b14565b611994565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906128cc565b611a35565b6040516106e693929190612c12565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061228f565b611aea565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612c65565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b81526004016108139190611d99565b6020604051808303816000875af1158015610832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108569190612ca7565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef9190612c65565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612d46565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a1f96959493929190612d93565b600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b5c5760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ab59190612e1e565b831015610af757610ac461085d565b610acd83610f55565b34610ad89190612e52565b610ae29190612ec3565b90508084610af09190612ef4565b9350610b06565b8334610b039190612e1e565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b4c573d6000803e3d6000fd5b5050508080600101915050610a62565b5050565b81610b6a33610f55565b1015610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612f9a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c0c9493929190612fba565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cec5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613071565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d86929190613091565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610deb91906130ba565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ffc70048484846040518463ffffffff1660e01b8152600401610e86939291906130dc565b600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f509190612c65565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610fb19190612221565b602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612c65565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161102c93929190613113565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c67338686611085338a611859565b61108f9190612ef4565b6040518463ffffffff1660e01b81526004016110ad939291906130dc565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161111c9392919061314a565b600060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112025750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906131f3565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161129e939291906130dc565b600060405180830381600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b50505050505050565b816112e08433611859565b10156112f3576112f08333611859565b91505b6112fe833384611900565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b815260040161135f9493929190612fba565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690613285565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b81526004016114da929190613091565b600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016115829b9a999897969594939291906132eb565b60206040518083038185885af11580156115a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115c59190612c65565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161163794939291906133e0565b6020604051808303816000875af1158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613441565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006116ac611ce7565b6116b4611d24565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016117139190611d99565b600060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117599190613797565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b81526004016117d1929190613875565b600060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061181791906139ac565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8160405161184e9190611d99565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016118b79291906139f5565b602060405180830381865afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190612c65565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b815260040161195d939291906130dc565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b81526004016119fb9796959493929190613d0e565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611a97929190613875565b600060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611add9190613d6e565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b935750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613e4f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce457806003600060046000815480929190611c3b90613e6f565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611d01611d5e565b8152602001611d0e611d5e565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b611d9381611d80565b82525050565b6000602082019050611dae6000830184611d8a565b92915050565b6000604051905090565b600080fd5b600080fd5b611dd181611d80565b8114611ddc57600080fd5b50565b600081359050611dee81611dc8565b92915050565b600060208284031215611e0a57611e09611dbe565b5b6000611e1884828501611ddf565b91505092915050565b60008115159050919050565b611e3681611e21565b82525050565b6000602082019050611e516000830184611e2d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e8282611e57565b9050919050565b611e9281611e77565b8114611e9d57600080fd5b50565b600081359050611eaf81611e89565b92915050565b611ebe81611e21565b8114611ec957600080fd5b50565b600081359050611edb81611eb5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0657611f05611ee1565b5b8235905067ffffffffffffffff811115611f2357611f22611ee6565b5b602083019150836001820283011115611f3f57611f3e611eeb565b5b9250929050565b600080600080600080600060c0888a031215611f6557611f64611dbe565b5b6000611f738a828b01611ea0565b9750506020611f848a828b01611ecc565b9650506040611f958a828b01611ecc565b9550506060611fa68a828b01611ddf565b9450506080611fb78a828b01611ddf565b93505060a088013567ffffffffffffffff811115611fd857611fd7611dc3565b5b611fe48a828b01611ef0565b925092505092959891949750929550565b60008060006060848603121561200e5761200d611dbe565b5b600061201c86828701611ddf565b935050602061202d86828701611ddf565b925050604061203e86828701611ecc565b9150509250925092565b6000806040838503121561205f5761205e611dbe565b5b600061206d85828601611ea0565b925050602061207e85828601611ddf565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120d68261208d565b810181811067ffffffffffffffff821117156120f5576120f461209e565b5b80604052505050565b6000612108611db4565b905061211482826120cd565b919050565b600067ffffffffffffffff8211156121345761213361209e565b5b61213d8261208d565b9050602081019050919050565b82818337600083830152505050565b600061216c61216784612119565b6120fe565b90508281526020810184848401111561218857612187612088565b5b61219384828561214a565b509392505050565b600082601f8301126121b0576121af611ee1565b5b81356121c0848260208601612159565b91505092915050565b6000602082840312156121df576121de611dbe565b5b600082013567ffffffffffffffff8111156121fd576121fc611dc3565b5b6122098482850161219b565b91505092915050565b61221b81611e77565b82525050565b60006020820190506122366000830184612212565b92915050565b60008060006060848603121561225557612254611dbe565b5b600061226386828701611ea0565b935050602061227486828701611ea0565b925050604061228586828701611ddf565b9150509250925092565b6000602082840312156122a5576122a4611dbe565b5b60006122b384828501611ea0565b91505092915050565b6000806000606084860312156122d5576122d4611dbe565b5b60006122e386828701611ddf565b93505060206122f486828701611ecc565b925050604061230586828701611ecc565b9150509250925092565b60008060006060848603121561232857612327611dbe565b5b600061233686828701611ea0565b935050602061234786828701611ddf565b925050604061235886828701611ddf565b9150509250925092565b6000806000806080858703121561237c5761237b611dbe565b5b600061238a87828801611ddf565b945050602061239b87828801611ea0565b93505060406123ac87828801611ddf565b92505060606123bd87828801611ecc565b91505092959194509250565b60008083601f8401126123df576123de611ee1565b5b8235905067ffffffffffffffff8111156123fc576123fb611ee6565b5b60208301915083600182028301111561241857612417611eeb565b5b9250929050565b60008190508260206002028201111561243b5761243a611eeb565b5b92915050565b6000806000806000806000806000806101408b8d03121561246557612464611dbe565b5b60008b013567ffffffffffffffff81111561248357612482611dc3565b5b61248f8d828e016123c9565b9a509a505060206124a28d828e01611ddf565b98505060406124b38d828e0161241f565b97505060806124c48d828e0161241f565b96505060c06124d58d828e01611ddf565b95505060e06124e68d828e01611ecc565b9450506101006124f88d828e01611ecc565b9350506101208b013567ffffffffffffffff81111561251a57612519611dc3565b5b6125268d828e01611ef0565b92509250509295989b9194979a5092959850565b6000819050919050565b61254d8161253a565b811461255857600080fd5b50565b60008135905061256a81612544565b92915050565b6000806040838503121561258757612586611dbe565b5b600083013567ffffffffffffffff8111156125a5576125a4611dc3565b5b6125b18582860161219b565b92505060206125c28582860161255b565b9150509250929050565b6125d581611d80565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061260783836125cc565b60208301905092915050565b6000602082019050919050565b612629816125db565b61263381846125e6565b925061263e826125f1565b8060005b8381101561266f57815161265687826125fb565b965061266183612613565b925050600181019050612642565b505050505050565b61268081611e21565b82525050565b60e08201600082015161269c60008501826125cc565b5060208201516126af6020850182612620565b5060408201516126c26060850182612620565b5060608201516126d560a08501826125cc565b5060808201516126e860c0850182612677565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272857808201518184015260208101905061270d565b60008484015250505050565b600061273f826126ee565b61274981856126f9565b935061275981856020860161270a565b6127628161208d565b840191505092915050565b600060c083016000830151848203600086015261278a8282612734565b915050602083015161279f60208601826125cc565b5060408301516127b260408601826125cc565b5060608301516127c560608601826125cc565b5060808301516127d86080860182612677565b5060a08301516127eb60a0860182612677565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b600061281d826127f6565b6128278185612801565b935061283781856020860161270a565b6128408161208d565b840191505092915050565b60006101a082019050612861600083018a611d8a565b61286e6020830189612212565b61287b6040830188611d8a565b6128886060830187612686565b81810361014083015261289b818661276d565b90506128ab610160830185611e2d565b8181036101808301526128be8184612812565b905098975050505050505050565b600080602083850312156128e3576128e2611dbe565b5b600083013567ffffffffffffffff81111561290157612900611dc3565b5b61290d858286016123c9565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61294e81611e77565b82525050565b60408201600082015161296a60008501826125cc565b50602082015161297d6020850182612945565b50505050565b600061298f8383612954565b60408301905092915050565b6000602082019050919050565b60006129b382612919565b6129bd8185612924565b93506129c883612935565b8060005b838110156129f95781516129e08882612983565b97506129eb8361299b565b9250506001810190506129cc565b5085935050505092915050565b60006020820190508181036000830152612a2081846129a8565b905092915050565b60008060408385031215612a3f57612a3e611dbe565b5b6000612a4d85828601611ea0565b9250506020612a5e85828601611ea0565b9150509250929050565b60008083601f840112612a7e57612a7d611ee1565b5b8235905067ffffffffffffffff811115612a9b57612a9a611ee6565b5b602083019150836040820283011115612ab757612ab6611eeb565b5b9250929050565b60008083601f840112612ad457612ad3611ee1565b5b8235905067ffffffffffffffff811115612af157612af0611ee6565b5b602083019150836020820283011115612b0d57612b0c611eeb565b5b9250929050565b60008060008060008060608789031215612b3157612b30611dbe565b5b600087013567ffffffffffffffff811115612b4f57612b4e611dc3565b5b612b5b89828a01612a68565b9650965050602087013567ffffffffffffffff811115612b7e57612b7d611dc3565b5b612b8a89828a016123c9565b9450945050604087013567ffffffffffffffff811115612bad57612bac611dc3565b5b612bb989828a01612abe565b92509250509295509295509295565b600082825260208201905092915050565b6000612be4826126ee565b612bee8185612bc8565b9350612bfe81856020860161270a565b612c078161208d565b840191505092915050565b60006060820190508181036000830152612c2c8186612bd9565b9050612c3b6020830185612212565b612c486040830184611d8a565b949350505050565b600081519050612c5f81611dc8565b92915050565b600060208284031215612c7b57612c7a611dbe565b5b6000612c8984828501612c50565b91505092915050565b600081519050612ca181611eb5565b92915050565b600060208284031215612cbd57612cbc611dbe565b5b6000612ccb84828501612c92565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612d30602b83612bc8565b9150612d3b82612cd4565b604082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b6000612d728385612801565b9350612d7f83858461214a565b612d888361208d565b840190509392505050565b600060a082019050612da86000830189611e2d565b612db56020830188611e2d565b612dc26040830187611d8a565b612dcf6060830186611d8a565b8181036080830152612de2818486612d66565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2982611d80565b9150612e3483611d80565b9250828203905081811115612e4c57612e4b612def565b5b92915050565b6000612e5d82611d80565b9150612e6883611d80565b9250828202612e7681611d80565b91508282048414831517612e8d57612e8c612def565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ece82611d80565b9150612ed983611d80565b925082612ee957612ee8612e94565b5b828204905092915050565b6000612eff82611d80565b9150612f0a83611d80565b9250828201905080821115612f2257612f21612def565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b6000612f84602783612bc8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b6000608082019050612fcf6000830187611d8a565b612fdc6020830186612212565b612fe96040830185611d8a565b612ff66060830184611e2d565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061305b602583612bc8565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b60006040820190506130a66000830185612212565b6130b36020830184611d8a565b9392505050565b600060208201905081810360008301526130d48184612bd9565b905092915050565b60006060820190506130f16000830186612212565b6130fe6020830185612212565b61310b6040830184611d8a565b949350505050565b60006060820190506131286000830186611d8a565b6131356020830185611e2d565b6131426040830184611e2d565b949350505050565b600060608201905061315f6000830186612212565b61316c6020830185611d8a565b6131796040830184611d8a565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b60006131dd602783612bc8565b91506131e882613181565b604082019050919050565b6000602082019050818103600083015261320c816131d0565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061326f602583612bc8565b915061327a82613213565b604082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b60006132b18385612bc8565b93506132be83858461214a565b6132c78361208d565b840190509392505050565b82818337505050565b6132e7604083836132d2565b5050565b600061016082019050613301600083018e612212565b8181036020830152613314818c8e6132a5565b9050613323604083018b611d8a565b613330606083018a6132db565b61333d60a08301896132db565b61334a60e0830188611d8a565b613358610100830187611e2d565b613366610120830186611e2d565b81810361014083015261337a818486612d66565b90509c9b505050505050505050505050565b6133958161253a565b82525050565b6000819050919050565b6000819050919050565b60006133ca6133c56133c08461339b565b6133a5565b611d80565b9050919050565b6133da816133af565b82525050565b600060808201905081810360008301526133fa8187612bd9565b9050613409602083018661338c565b6134166040830185611e2d565b61342360608301846133d1565b95945050505050565b60008151905061343b81612544565b92915050565b60006020828403121561345757613456611dbe565b5b60006134658482850161342c565b91505092915050565b60008151905061347d81611e89565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156134a8576134a761209e565b5b602082029050919050565b60006134c66134c18461348d565b6120fe565b905080602084028301858111156134e0576134df611eeb565b5b835b8181101561350957806134f58882612c50565b8452602084019350506020810190506134e2565b5050509392505050565b600082601f83011261352857613527611ee1565b5b60026135358482856134b3565b91505092915050565b600060e0828403121561355457613553613483565b5b61355e60a06120fe565b9050600061356e84828501612c50565b600083015250602061358284828501613513565b602083015250606061359684828501613513565b60408301525060a06135aa84828501612c50565b60608301525060c06135be84828501612c92565b60808301525092915050565b60006135dd6135d884612119565b6120fe565b9050828152602081018484840111156135f9576135f8612088565b5b61360484828561270a565b509392505050565b600082601f83011261362157613620611ee1565b5b81516136318482602086016135ca565b91505092915050565b600060c082840312156136505761364f613483565b5b61365a60c06120fe565b9050600082015167ffffffffffffffff81111561367a57613679613488565b5b6136868482850161360c565b600083015250602061369a84828501612c50565b60208301525060406136ae84828501612c50565b60408301525060606136c284828501612c50565b60608301525060806136d684828501612c92565b60808301525060a06136ea84828501612c92565b60a08301525092915050565b600067ffffffffffffffff8211156137115761371061209e565b5b61371a8261208d565b9050602081019050919050565b600061373a613735846136f6565b6120fe565b90508281526020810184848401111561375657613755612088565b5b61376184828561270a565b509392505050565b600082601f83011261377e5761377d611ee1565b5b815161378e848260208601613727565b91505092915050565b60008060008060008060006101a0888a0312156137b7576137b6611dbe565b5b60006137c58a828b01612c50565b97505060206137d68a828b0161346e565b96505060406137e78a828b01612c50565b95505060606137f88a828b0161353e565b94505061014088015167ffffffffffffffff81111561381a57613819611dc3565b5b6138268a828b0161363a565b9350506101606138388a828b01612c92565b92505061018088015167ffffffffffffffff81111561385a57613859611dc3565b5b6138668a828b01613769565b91505092959891949750929550565b600060208201905081810360008301526138908184866132a5565b90509392505050565b600067ffffffffffffffff8211156138b4576138b361209e565b5b602082029050602081019050919050565b6000604082840312156138db576138da613483565b5b6138e560406120fe565b905060006138f584828501612c50565b60008301525060206139098482850161346e565b60208301525092915050565b600061392861392384613899565b6120fe565b9050808382526020820190506040840283018581111561394b5761394a611eeb565b5b835b81811015613974578061396088826138c5565b84526020840193505060408101905061394d565b5050509392505050565b600082601f83011261399357613992611ee1565b5b81516139a3848260208601613915565b91505092915050565b6000602082840312156139c2576139c1611dbe565b5b600082015167ffffffffffffffff8111156139e0576139df611dc3565b5b6139ec8482850161397e565b91505092915050565b6000604082019050613a0a6000830185612212565b613a176020830184612212565b9392505050565b6000819050919050565b6000613a376020840184611ddf565b905092915050565b6000613a4e6020840184611ea0565b905092915050565b60408201613a676000830183613a28565b613a7460008501826125cc565b50613a826020830183613a3f565b613a8f6020850182612945565b50505050565b6000613aa18383613a56565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613ad18385612924565b9350613adc82613a1e565b8060005b85811015613b1557613af28284613aad565b613afc8882613a95565b9750613b0783613ab8565b925050600181019050613ae0565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613b4c602084018461255b565b905092915050565b613b5d8161253a565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613b8f57613b8e613b6d565b5b83810192508235915060208301925067ffffffffffffffff821115613bb757613bb6613b63565b5b600182023603831315613bcd57613bcc613b68565b5b509250929050565b6000613be183856126f9565b9350613bee83858461214a565b613bf78361208d565b840190509392505050565b600060408301613c156000840184613b3d565b613c226000860182613b54565b50613c306020840184613b72565b8583036020870152613c43838284613bd5565b925050508091505092915050565b6000613c5d8383613c02565b905092915050565b600082356001604003833603038112613c8157613c80613b6d565b5b82810191505092915050565b6000602082019050919050565b6000613ca68385613b22565b935083602084028501613cb884613b33565b8060005b87811015613cfc578484038952613cd38284613c65565b613cdd8582613c51565b9450613ce883613c8d565b925060208a01995050600181019050613cbc565b50829750879450505050509392505050565b6000608082019050613d23600083018a612212565b8181036020830152613d3681888a613ac5565b90508181036040830152613d4b8186886132a5565b90508181036060830152613d60818486613c9a565b905098975050505050505050565b600080600060608486031215613d8757613d86611dbe565b5b600084015167ffffffffffffffff811115613da557613da4611dc3565b5b613db18682870161360c565b9350506020613dc28682870161346e565b9250506040613dd386828701612c50565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000613e39602f83612bc8565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b6000613e7a82611d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eac57613eab612def565b5b60018201905091905056fea2646970667358221220c79bd5679bb63264b2192b09b1c634fa20c9e328a470579d081f135e0332cd4164736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106101c25760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f1461065e578063e5b4d82714610687578063f8300fca146106b0578063fcb4888e146106ef576101c2565b8063a233627914610578578063da66863a146105bb578063dc00bbfe146105f8578063dd62ed3e14610621576101c2565b80639dc29fac116100d15780639dc29fac146104b95780639fbe7c73146104e25780639fd0987214610512578063a230c5241461053b576101c2565b8063883802741461042a5780638ce516da14610467578063975762b314610490576101c2565b806340c10f19116101645780635ffc70041161013e5780635ffc700414610370578063642b5bfb1461039957806370a08231146103c457806378e21c6e14610401576101c2565b806340c10f19146102e15780635c253c0b1461030a5780635daf08ca14610333576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc610718565b6040516101e99190611d99565b60405180910390f35b3480156101fe57600080fd5b5061020761071e565b6040516102149190611d99565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190611df4565b6107b6565b6040516102519190611e3c565b60405180910390f35b34801561026657600080fd5b5061026f61085d565b60405161027c9190611d99565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190611f46565b6108f4565b005b6102b6610a5a565b005b3480156102c457600080fd5b506102df60048036038101906102da9190611ff5565b610b60565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612048565b610c43565b005b34801561031657600080fd5b50610331600480360381019061032c91906121c9565b610dbc565b005b34801561033f57600080fd5b5061035a60048036038101906103559190611df4565b610df6565b6040516103679190612221565b60405180910390f35b34801561037c57600080fd5b506103976004803603810190610392919061223c565b610e29565b005b3480156103a557600080fd5b506103ae610ebd565b6040516103bb9190611d99565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061228f565b610f55565b6040516103f89190611d99565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906122bc565b610ff9565b005b34801561043657600080fd5b50610451600480360381019061044c919061230f565b611039565b60405161045e9190611e3c565b60405180910390f35b34801561047357600080fd5b5061048e6004803603810190610489919061223c565b611159565b005b34801561049c57600080fd5b506104b760048036038101906104b29190612362565b6112d5565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612048565b611397565b005b6104fc60048036038101906104f79190612441565b611510565b6040516105099190611d99565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612570565b6115d5565b005b34801561054757600080fd5b50610562600480360381019061055d919061228f565b61167f565b60405161056f9190611e3c565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190611df4565b61169f565b6040516105b2979695949392919061284b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd91906128cc565b611772565b6040516105ef9190612a06565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190611df4565b61181f565b005b34801561062d57600080fd5b5061064860048036038101906106439190612a28565b611859565b6040516106559190611d99565b60405180910390f35b34801561066a57600080fd5b506106856004803603810190610680919061223c565b611900565b005b34801561069357600080fd5b506106ae60048036038101906106a99190612b14565b611994565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906128cc565b611a35565b6040516106e693929190612c12565b60405180910390f35b3480156106fb57600080fd5b506107166004803603810190610711919061228f565b611aea565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b19190612c65565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b81526004016108139190611d99565b6020604051808303816000875af1158015610832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108569190612ca7565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ef9190612c65565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061099d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390612d46565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a1f96959493929190612d93565b600060405180830381600087803b158015610a3957600080fd5b505af1158015610a4d573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b5c5760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ab59190612e1e565b831015610af757610ac461085d565b610acd83610f55565b34610ad89190612e52565b610ae29190612ec3565b90508084610af09190612ef4565b9350610b06565b8334610b039190612e1e565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b4c573d6000803e3d6000fd5b5050508080600101915050610a62565b5050565b81610b6a33610f55565b1015610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba290612f9a565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c0c9493929190612fba565b600060405180830381600087803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cec5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290613071565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d86929190613091565b600060405180830381600087803b158015610da057600080fd5b505af1158015610db4573d6000803e3d6000fd5b505050505050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610deb91906130ba565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ffc70048484846040518463ffffffff1660e01b8152600401610e86939291906130dc565b600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f509190612c65565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610fb19190612221565b602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff29190612c65565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161102c93929190613113565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c67338686611085338a611859565b61108f9190612ef4565b6040518463ffffffff1660e01b81526004016110ad939291906130dc565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b815260040161111c9392919061314a565b600060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112025750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906131f3565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161129e939291906130dc565b600060405180830381600087803b1580156112b857600080fd5b505af11580156112cc573d6000803e3d6000fd5b50505050505050565b816112e08433611859565b10156112f3576112f08333611859565b91505b6112fe833384611900565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b815260040161135f9493929190612fba565b600060405180830381600087803b15801561137957600080fd5b505af115801561138d573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114405750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147690613285565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b81526004016114da929190613091565b600060405180830381600087803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016115829b9a999897969594939291906132eb565b60206040518083038185885af11580156115a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115c59190612c65565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161163794939291906133e0565b6020604051808303816000875af1158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613441565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006116ac611ce7565b6116b4611d24565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016117139190611d99565b600060405180830381865afa158015611730573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906117599190613797565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b81526004016117d1929190613875565b600060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061181791906139ac565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a8160405161184e9190611d99565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016118b79291906139f5565b602060405180830381865afa1580156118d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f89190612c65565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b815260040161195d939291906130dc565b600060405180830381600087803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b81526004016119fb9796959493929190613d0e565b600060405180830381600087803b158015611a1557600080fd5b505af1158015611a29573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611a97929190613875565b600060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611add9190613d6e565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b935750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990613e4f565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611ce457806003600060046000815480929190611c3b90613e6f565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611d01611d5e565b8152602001611d0e611d5e565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b611d9381611d80565b82525050565b6000602082019050611dae6000830184611d8a565b92915050565b6000604051905090565b600080fd5b600080fd5b611dd181611d80565b8114611ddc57600080fd5b50565b600081359050611dee81611dc8565b92915050565b600060208284031215611e0a57611e09611dbe565b5b6000611e1884828501611ddf565b91505092915050565b60008115159050919050565b611e3681611e21565b82525050565b6000602082019050611e516000830184611e2d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e8282611e57565b9050919050565b611e9281611e77565b8114611e9d57600080fd5b50565b600081359050611eaf81611e89565b92915050565b611ebe81611e21565b8114611ec957600080fd5b50565b600081359050611edb81611eb5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f0657611f05611ee1565b5b8235905067ffffffffffffffff811115611f2357611f22611ee6565b5b602083019150836001820283011115611f3f57611f3e611eeb565b5b9250929050565b600080600080600080600060c0888a031215611f6557611f64611dbe565b5b6000611f738a828b01611ea0565b9750506020611f848a828b01611ecc565b9650506040611f958a828b01611ecc565b9550506060611fa68a828b01611ddf565b9450506080611fb78a828b01611ddf565b93505060a088013567ffffffffffffffff811115611fd857611fd7611dc3565b5b611fe48a828b01611ef0565b925092505092959891949750929550565b60008060006060848603121561200e5761200d611dbe565b5b600061201c86828701611ddf565b935050602061202d86828701611ddf565b925050604061203e86828701611ecc565b9150509250925092565b6000806040838503121561205f5761205e611dbe565b5b600061206d85828601611ea0565b925050602061207e85828601611ddf565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120d68261208d565b810181811067ffffffffffffffff821117156120f5576120f461209e565b5b80604052505050565b6000612108611db4565b905061211482826120cd565b919050565b600067ffffffffffffffff8211156121345761213361209e565b5b61213d8261208d565b9050602081019050919050565b82818337600083830152505050565b600061216c61216784612119565b6120fe565b90508281526020810184848401111561218857612187612088565b5b61219384828561214a565b509392505050565b600082601f8301126121b0576121af611ee1565b5b81356121c0848260208601612159565b91505092915050565b6000602082840312156121df576121de611dbe565b5b600082013567ffffffffffffffff8111156121fd576121fc611dc3565b5b6122098482850161219b565b91505092915050565b61221b81611e77565b82525050565b60006020820190506122366000830184612212565b92915050565b60008060006060848603121561225557612254611dbe565b5b600061226386828701611ea0565b935050602061227486828701611ea0565b925050604061228586828701611ddf565b9150509250925092565b6000602082840312156122a5576122a4611dbe565b5b60006122b384828501611ea0565b91505092915050565b6000806000606084860312156122d5576122d4611dbe565b5b60006122e386828701611ddf565b93505060206122f486828701611ecc565b925050604061230586828701611ecc565b9150509250925092565b60008060006060848603121561232857612327611dbe565b5b600061233686828701611ea0565b935050602061234786828701611ddf565b925050604061235886828701611ddf565b9150509250925092565b6000806000806080858703121561237c5761237b611dbe565b5b600061238a87828801611ddf565b945050602061239b87828801611ea0565b93505060406123ac87828801611ddf565b92505060606123bd87828801611ecc565b91505092959194509250565b60008083601f8401126123df576123de611ee1565b5b8235905067ffffffffffffffff8111156123fc576123fb611ee6565b5b60208301915083600182028301111561241857612417611eeb565b5b9250929050565b60008190508260206002028201111561243b5761243a611eeb565b5b92915050565b6000806000806000806000806000806101408b8d03121561246557612464611dbe565b5b60008b013567ffffffffffffffff81111561248357612482611dc3565b5b61248f8d828e016123c9565b9a509a505060206124a28d828e01611ddf565b98505060406124b38d828e0161241f565b97505060806124c48d828e0161241f565b96505060c06124d58d828e01611ddf565b95505060e06124e68d828e01611ecc565b9450506101006124f88d828e01611ecc565b9350506101208b013567ffffffffffffffff81111561251a57612519611dc3565b5b6125268d828e01611ef0565b92509250509295989b9194979a5092959850565b6000819050919050565b61254d8161253a565b811461255857600080fd5b50565b60008135905061256a81612544565b92915050565b6000806040838503121561258757612586611dbe565b5b600083013567ffffffffffffffff8111156125a5576125a4611dc3565b5b6125b18582860161219b565b92505060206125c28582860161255b565b9150509250929050565b6125d581611d80565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061260783836125cc565b60208301905092915050565b6000602082019050919050565b612629816125db565b61263381846125e6565b925061263e826125f1565b8060005b8381101561266f57815161265687826125fb565b965061266183612613565b925050600181019050612642565b505050505050565b61268081611e21565b82525050565b60e08201600082015161269c60008501826125cc565b5060208201516126af6020850182612620565b5060408201516126c26060850182612620565b5060608201516126d560a08501826125cc565b5060808201516126e860c0850182612677565b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272857808201518184015260208101905061270d565b60008484015250505050565b600061273f826126ee565b61274981856126f9565b935061275981856020860161270a565b6127628161208d565b840191505092915050565b600060c083016000830151848203600086015261278a8282612734565b915050602083015161279f60208601826125cc565b5060408301516127b260408601826125cc565b5060608301516127c560608601826125cc565b5060808301516127d86080860182612677565b5060a08301516127eb60a0860182612677565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b600061281d826127f6565b6128278185612801565b935061283781856020860161270a565b6128408161208d565b840191505092915050565b60006101a082019050612861600083018a611d8a565b61286e6020830189612212565b61287b6040830188611d8a565b6128886060830187612686565b81810361014083015261289b818661276d565b90506128ab610160830185611e2d565b8181036101808301526128be8184612812565b905098975050505050505050565b600080602083850312156128e3576128e2611dbe565b5b600083013567ffffffffffffffff81111561290157612900611dc3565b5b61290d858286016123c9565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61294e81611e77565b82525050565b60408201600082015161296a60008501826125cc565b50602082015161297d6020850182612945565b50505050565b600061298f8383612954565b60408301905092915050565b6000602082019050919050565b60006129b382612919565b6129bd8185612924565b93506129c883612935565b8060005b838110156129f95781516129e08882612983565b97506129eb8361299b565b9250506001810190506129cc565b5085935050505092915050565b60006020820190508181036000830152612a2081846129a8565b905092915050565b60008060408385031215612a3f57612a3e611dbe565b5b6000612a4d85828601611ea0565b9250506020612a5e85828601611ea0565b9150509250929050565b60008083601f840112612a7e57612a7d611ee1565b5b8235905067ffffffffffffffff811115612a9b57612a9a611ee6565b5b602083019150836040820283011115612ab757612ab6611eeb565b5b9250929050565b60008083601f840112612ad457612ad3611ee1565b5b8235905067ffffffffffffffff811115612af157612af0611ee6565b5b602083019150836020820283011115612b0d57612b0c611eeb565b5b9250929050565b60008060008060008060608789031215612b3157612b30611dbe565b5b600087013567ffffffffffffffff811115612b4f57612b4e611dc3565b5b612b5b89828a01612a68565b9650965050602087013567ffffffffffffffff811115612b7e57612b7d611dc3565b5b612b8a89828a016123c9565b9450945050604087013567ffffffffffffffff811115612bad57612bac611dc3565b5b612bb989828a01612abe565b92509250509295509295509295565b600082825260208201905092915050565b6000612be4826126ee565b612bee8185612bc8565b9350612bfe81856020860161270a565b612c078161208d565b840191505092915050565b60006060820190508181036000830152612c2c8186612bd9565b9050612c3b6020830185612212565b612c486040830184611d8a565b949350505050565b600081519050612c5f81611dc8565b92915050565b600060208284031215612c7b57612c7a611dbe565b5b6000612c8984828501612c50565b91505092915050565b600081519050612ca181611eb5565b92915050565b600060208284031215612cbd57612cbc611dbe565b5b6000612ccb84828501612c92565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612d30602b83612bc8565b9150612d3b82612cd4565b604082019050919050565b60006020820190508181036000830152612d5f81612d23565b9050919050565b6000612d728385612801565b9350612d7f83858461214a565b612d888361208d565b840190509392505050565b600060a082019050612da86000830189611e2d565b612db56020830188611e2d565b612dc26040830187611d8a565b612dcf6060830186611d8a565b8181036080830152612de2818486612d66565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2982611d80565b9150612e3483611d80565b9250828203905081811115612e4c57612e4b612def565b5b92915050565b6000612e5d82611d80565b9150612e6883611d80565b9250828202612e7681611d80565b91508282048414831517612e8d57612e8c612def565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ece82611d80565b9150612ed983611d80565b925082612ee957612ee8612e94565b5b828204905092915050565b6000612eff82611d80565b9150612f0a83611d80565b9250828201905080821115612f2257612f21612def565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b6000612f84602783612bc8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b6000608082019050612fcf6000830187611d8a565b612fdc6020830186612212565b612fe96040830185611d8a565b612ff66060830184611e2d565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061305b602583612bc8565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b60006040820190506130a66000830185612212565b6130b36020830184611d8a565b9392505050565b600060208201905081810360008301526130d48184612bd9565b905092915050565b60006060820190506130f16000830186612212565b6130fe6020830185612212565b61310b6040830184611d8a565b949350505050565b60006060820190506131286000830186611d8a565b6131356020830185611e2d565b6131426040830184611e2d565b949350505050565b600060608201905061315f6000830186612212565b61316c6020830185611d8a565b6131796040830184611d8a565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b60006131dd602783612bc8565b91506131e882613181565b604082019050919050565b6000602082019050818103600083015261320c816131d0565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061326f602583612bc8565b915061327a82613213565b604082019050919050565b6000602082019050818103600083015261329e81613262565b9050919050565b60006132b18385612bc8565b93506132be83858461214a565b6132c78361208d565b840190509392505050565b82818337505050565b6132e7604083836132d2565b5050565b600061016082019050613301600083018e612212565b8181036020830152613314818c8e6132a5565b9050613323604083018b611d8a565b613330606083018a6132db565b61333d60a08301896132db565b61334a60e0830188611d8a565b613358610100830187611e2d565b613366610120830186611e2d565b81810361014083015261337a818486612d66565b90509c9b505050505050505050505050565b6133958161253a565b82525050565b6000819050919050565b6000819050919050565b60006133ca6133c56133c08461339b565b6133a5565b611d80565b9050919050565b6133da816133af565b82525050565b600060808201905081810360008301526133fa8187612bd9565b9050613409602083018661338c565b6134166040830185611e2d565b61342360608301846133d1565b95945050505050565b60008151905061343b81612544565b92915050565b60006020828403121561345757613456611dbe565b5b60006134658482850161342c565b91505092915050565b60008151905061347d81611e89565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156134a8576134a761209e565b5b602082029050919050565b60006134c66134c18461348d565b6120fe565b905080602084028301858111156134e0576134df611eeb565b5b835b8181101561350957806134f58882612c50565b8452602084019350506020810190506134e2565b5050509392505050565b600082601f83011261352857613527611ee1565b5b60026135358482856134b3565b91505092915050565b600060e0828403121561355457613553613483565b5b61355e60a06120fe565b9050600061356e84828501612c50565b600083015250602061358284828501613513565b602083015250606061359684828501613513565b60408301525060a06135aa84828501612c50565b60608301525060c06135be84828501612c92565b60808301525092915050565b60006135dd6135d884612119565b6120fe565b9050828152602081018484840111156135f9576135f8612088565b5b61360484828561270a565b509392505050565b600082601f83011261362157613620611ee1565b5b81516136318482602086016135ca565b91505092915050565b600060c082840312156136505761364f613483565b5b61365a60c06120fe565b9050600082015167ffffffffffffffff81111561367a57613679613488565b5b6136868482850161360c565b600083015250602061369a84828501612c50565b60208301525060406136ae84828501612c50565b60408301525060606136c284828501612c50565b60608301525060806136d684828501612c92565b60808301525060a06136ea84828501612c92565b60a08301525092915050565b600067ffffffffffffffff8211156137115761371061209e565b5b61371a8261208d565b9050602081019050919050565b600061373a613735846136f6565b6120fe565b90508281526020810184848401111561375657613755612088565b5b61376184828561270a565b509392505050565b600082601f83011261377e5761377d611ee1565b5b815161378e848260208601613727565b91505092915050565b60008060008060008060006101a0888a0312156137b7576137b6611dbe565b5b60006137c58a828b01612c50565b97505060206137d68a828b0161346e565b96505060406137e78a828b01612c50565b95505060606137f88a828b0161353e565b94505061014088015167ffffffffffffffff81111561381a57613819611dc3565b5b6138268a828b0161363a565b9350506101606138388a828b01612c92565b92505061018088015167ffffffffffffffff81111561385a57613859611dc3565b5b6138668a828b01613769565b91505092959891949750929550565b600060208201905081810360008301526138908184866132a5565b90509392505050565b600067ffffffffffffffff8211156138b4576138b361209e565b5b602082029050602081019050919050565b6000604082840312156138db576138da613483565b5b6138e560406120fe565b905060006138f584828501612c50565b60008301525060206139098482850161346e565b60208301525092915050565b600061392861392384613899565b6120fe565b9050808382526020820190506040840283018581111561394b5761394a611eeb565b5b835b81811015613974578061396088826138c5565b84526020840193505060408101905061394d565b5050509392505050565b600082601f83011261399357613992611ee1565b5b81516139a3848260208601613915565b91505092915050565b6000602082840312156139c2576139c1611dbe565b5b600082015167ffffffffffffffff8111156139e0576139df611dc3565b5b6139ec8482850161397e565b91505092915050565b6000604082019050613a0a6000830185612212565b613a176020830184612212565b9392505050565b6000819050919050565b6000613a376020840184611ddf565b905092915050565b6000613a4e6020840184611ea0565b905092915050565b60408201613a676000830183613a28565b613a7460008501826125cc565b50613a826020830183613a3f565b613a8f6020850182612945565b50505050565b6000613aa18383613a56565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613ad18385612924565b9350613adc82613a1e565b8060005b85811015613b1557613af28284613aad565b613afc8882613a95565b9750613b0783613ab8565b925050600181019050613ae0565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613b4c602084018461255b565b905092915050565b613b5d8161253a565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613b8f57613b8e613b6d565b5b83810192508235915060208301925067ffffffffffffffff821115613bb757613bb6613b63565b5b600182023603831315613bcd57613bcc613b68565b5b509250929050565b6000613be183856126f9565b9350613bee83858461214a565b613bf78361208d565b840190509392505050565b600060408301613c156000840184613b3d565b613c226000860182613b54565b50613c306020840184613b72565b8583036020870152613c43838284613bd5565b925050508091505092915050565b6000613c5d8383613c02565b905092915050565b600082356001604003833603038112613c8157613c80613b6d565b5b82810191505092915050565b6000602082019050919050565b6000613ca68385613b22565b935083602084028501613cb884613b33565b8060005b87811015613cfc578484038952613cd38284613c65565b613cdd8582613c51565b9450613ce883613c8d565b925060208a01995050600181019050613cbc565b50829750879450505050509392505050565b6000608082019050613d23600083018a612212565b8181036020830152613d3681888a613ac5565b90508181036040830152613d4b8186886132a5565b90508181036060830152613d60818486613c9a565b905098975050505050505050565b600080600060608486031215613d8757613d86611dbe565b5b600084015167ffffffffffffffff811115613da557613da4611dc3565b5b613db18682870161360c565b9350506020613dc28682870161346e565b9250506040613dd386828701612c50565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000613e39602f83612bc8565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b6000613e7a82611d80565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613eac57613eab612def565b5b60018201905091905056fea2646970667358221220c79bd5679bb63264b2192b09b1c634fa20c9e328a470579d081f135e0332cd4164736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Forum.json b/frontend/contractArtifacts/Forum.json new file mode 100644 index 0000000..308eff0 --- /dev/null +++ b/frontend/contractArtifacts/Forum.json @@ -0,0 +1,215 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Forum", + "sourceName": "contracts/core/Forum.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "id", + "type": "string" + } + ], + "name": "PostAdded", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "weightPPM", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authorAddress", + "type": "address" + } + ], + "internalType": "struct Author[]", + "name": "authors", + "type": "tuple[]" + }, + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "components": [ + { + "internalType": "int256", + "name": "weightPPM", + "type": "int256" + }, + { + "internalType": "string", + "name": "targetPostId", + "type": "string" + } + ], + "internalType": "struct Citation[]", + "name": "citations", + "type": "tuple[]" + } + ], + "name": "addPost", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + } + ], + "name": "getPostAuthors", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "weightPPM", + "type": "uint256" + }, + { + "internalType": "address", + "name": "authorAddress", + "type": "address" + } + ], + "internalType": "struct Author[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "postCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "postIds", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "posts", + "outputs": [ + { + "internalType": "string", + "name": "id", + "type": "string" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "reputation", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "postId", + "type": "string" + }, + { + "internalType": "int256", + "name": "amount", + "type": "int256" + }, + { + "internalType": "bool", + "name": "initialNegative", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "depth", + "type": "uint256" + } + ], + "name": "propagateReputation", + "outputs": [ + { + "internalType": "int256", + "name": "refundToInbound", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600360055534801561001557600080fd5b5061390b806100256000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638b96129b1161005b5780638b96129b14610100578063da66863a1461011c578063f8300fca1461014c578063fe0d695a1461017e5761007d565b806317906c2e1461008257806317e19f24146100a057806350cde8ef146100d0575b600080fd5b61008a61019a565b6040516100979190611ff4565b60405180910390f35b6100ba60048036038101906100b59190612203565b6101a0565b6040516100c79190612295565b60405180910390f35b6100ea60048036038101906100e591906122b0565b610e0d565b6040516100f7919061235c565b60405180910390f35b61011a600480360381019061011591906124e8565b610eb9565b005b610136600480360381019061013191906125b1565b611472565b60405161014391906126fa565b60405180910390f35b6101666004803603810190610161919061271c565b61155a565b60405161017593929190612774565b60405180910390f35b610198600480360381019061019391906127f0565b611642565b005b60025481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061022957503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9061288f565b60405180910390fd5b600554821061027957839050610e05565b6000808660405161028a91906128eb565b9081526020016040518091039020905060008160020180549050036102b25784915050610e05565b60005b81600301805490508110156103e65760008260030182815481106102dc576102db612902565b5b90600052602060002090600202016000015412156103d9576103cb8783600301838154811061030e5761030d612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461034190612960565b80601f016020809104026020016040519081016040528092919081815260200182805461036d90612960565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505081525050888888611717565b866103d691906129c0565b95505b80806001019150506102b5565b5060005b816003018054905081101561051b57600082600301828154811061041157610410612902565b5b906000526020600020906002020160000154131561050e576105008783600301838154811061044357610442612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461047690612960565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612960565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b505050505081525050888888611717565b8661050b91906129c0565b95505b80806001019150506103ea565b506000851315610807576107e6816040518060a001604052908160008201805461054490612960565b80601f016020809104026020016040519081016040528092919081815260200182805461057090612960565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156106d35783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610641565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107ce57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461073d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461076990612960565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152505081526020019060010190610700565b50505050815260200160048201548152505086611989565b50848160040160008282546107fb9190612a03565b92505081905550610e03565b60008582600401546108199190612a37565b12610b0a57610adf816040518060a001604052908160008201805461083d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461086990612960565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156109cc5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061093a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ac7578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610a3690612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6290612960565b8015610aaf5780601f10610a8457610100808354040283529160200191610aaf565b820191906000526020600020905b815481529060010190602001808311610a9257829003601f168201915b505050505081525050815260200190600101906109f9565b50505050815260200160048201548152505086611989565b915084610aeb90612a7b565b816004016000828254610afe9190612ac3565b92505081905550610e02565b848160040154610b1a9190612a37565b9150610dea816040518060a0016040529081600082018054610b3b90612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6790612960565b8015610bb45780601f10610b8957610100808354040283529160200191610bb4565b820191906000526020600020905b815481529060010190602001808311610b9757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610cca5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610c38565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610dc5578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610d3490612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6090612960565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b50505050508152505081526020019060010190610cf7565b5050505081526020016004820154815250508260040154610de590612a7b565b611989565b82610df59190612a37565b9150600081600401819055505b5b505b949350505050565b60018181548110610e1d57600080fd5b906000526020600020016000915090508054610e3890612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490612960565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090612b69565b60405180910390fd5b60008686905011610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690612bfb565b60405180910390fd5b60026000815480929190610fa290612c1b565b91905055506001848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182610fe4929190612e1a565b506000808585604051610ff8929190612f0f565b908152602001604051809103902090506000816002018054905014611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612f9a565b60405180910390fd5b878160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848260000191826110a8929190612e1a565b50600080600090505b88889050811015611147578888828181106110cf576110ce612902565b5b90506040020160000135826110e49190612a03565b9150826002018989838181106110fd576110fc612902565b5b905060400201908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111389190613147565b505080806001019150506110b1565b50620f4240811461118d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611184906131c7565b60405180910390fd5b60005b8484905081101561120857826003018585838181106111b2576111b1612902565b5b90506020028101906111c491906131f6565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111f9919061333c565b50508080600101915050611190565b5060008060005b846003018054905081101561132c57600085600301828154811061123657611235612902565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906133bc565b60405180910390fd5b620f42408113156112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea9061344e565b60405180910390fd5b600081131561130f5780846113089190612a37565b935061131e565b808361131b9190612a37565b92505b50808060010191505061120f565b50620f4240821315611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906134e0565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613572565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c253c0b89896040518363ffffffff1660e01b81526004016114339291906135bf565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b505050505050505050505050505050565b60606000808484604051611487929190612f0f565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b8282101561154d5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906114bb565b5050505091505092915050565b60008180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461159390612960565b80601f01602080910402602001604051908101604052809291908181526020018280546115bf90612960565b801561160c5780601f106115e15761010080835404028352916020019161160c565b820191906000526020600020905b8154815290600101906020018083116115ef57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613655565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424085600001518561172d9190613675565b611737919061371c565b905060008560200151510361184057600081121561178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611781906137f8565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611809929190613818565b600060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b50505050611980565b600060038760405161185291906128eb565b9081526020016040518091039020866020015160405161187291906128eb565b908152602001604051809103902054905083156118df5760008212156118ba578061189c90612a7b565b82136118b157806118ac90612a7b565b6118b3565b815b91506118de565b806118c490612a7b565b82126118d957806118d490612a7b565b6118db565b815b91505b5b600061191887602001518487806119065750600087148015611905575060008a60000151125b5b6001886119139190612a03565b6101a0565b9050808361192691906129c0565b92508260038960405161193991906128eb565b9081526020016040518091039020886020015160405161195991906128eb565b908152602001604051809103902060008282546119769190612a37565b9250508190555050505b95945050505050565b60008060005b846040015151811015611a5857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e866040015183815181106119f1576119f0612902565b5b6020026020010151602001516040518263ffffffff1660e01b8152600401611a199190613841565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050808060010191505061198f565b5060005b846040015151811015611fd357600085604001518281518110611a8257611a81612902565b5b6020026020010151905060006001876040015151611aa09190612ac3565b831015611ada57620f4240826000015187611abb9190613675565b611ac5919061371c565b90508084611ad39190612a37565b9350611ae9565b8386611ae691906129c0565b90505b6000811315611c3f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460200151846040518463ffffffff1660e01b8152600401611b779392919061385c565b600060405180830381600087803b158015611b9157600080fd5b505af1158015611ba5573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e83602001516040518263ffffffff1660e01b8152600401611c089190613841565b600060405180830381600087803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050611fc4565b80611c4990612a7b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823184602001516040518263ffffffff1660e01b8152600401611ca89190613841565b602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906138a8565b1015611f0257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823183602001516040518263ffffffff1660e01b8152600401611d4e9190613841565b602060405180830381865afa158015611d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8f91906138a8565b81611d9a9190612a37565b85611da59190612a37565b9450600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823187602001516040518263ffffffff1660e01b8152600401611e6c9190613841565b602060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ead91906138a8565b6040518463ffffffff1660e01b8152600401611ecb9392919061385c565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b50505050611fc3565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7290612a7b565b6040518463ffffffff1660e01b8152600401611f909392919061385c565b600060405180830381600087803b158015611faa57600080fd5b505af1158015611fbe573d6000803e3d6000fd5b505050505b5b50508080600101915050611a5c565b505092915050565b6000819050919050565b611fee81611fdb565b82525050565b60006020820190506120096000830184611fe5565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120768261202d565b810181811067ffffffffffffffff821117156120955761209461203e565b5b80604052505050565b60006120a861200f565b90506120b4828261206d565b919050565b600067ffffffffffffffff8211156120d4576120d361203e565b5b6120dd8261202d565b9050602081019050919050565b82818337600083830152505050565b600061210c612107846120b9565b61209e565b90508281526020810184848401111561212857612127612028565b5b6121338482856120ea565b509392505050565b600082601f8301126121505761214f612023565b5b81356121608482602086016120f9565b91505092915050565b6000819050919050565b61217c81612169565b811461218757600080fd5b50565b60008135905061219981612173565b92915050565b60008115159050919050565b6121b48161219f565b81146121bf57600080fd5b50565b6000813590506121d1816121ab565b92915050565b6121e081611fdb565b81146121eb57600080fd5b50565b6000813590506121fd816121d7565b92915050565b6000806000806080858703121561221d5761221c612019565b5b600085013567ffffffffffffffff81111561223b5761223a61201e565b5b6122478782880161213b565b94505060206122588782880161218a565b9350506040612269878288016121c2565b925050606061227a878288016121ee565b91505092959194509250565b61228f81612169565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000602082840312156122c6576122c5612019565b5b60006122d4848285016121ee565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123175780820151818401526020810190506122fc565b60008484015250505050565b600061232e826122dd565b61233881856122e8565b93506123488185602086016122f9565b6123518161202d565b840191505092915050565b600060208201905081810360008301526123768184612323565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a98261237e565b9050919050565b6123b98161239e565b81146123c457600080fd5b50565b6000813590506123d6816123b0565b92915050565b600080fd5b600080fd5b60008083601f8401126123fc576123fb612023565b5b8235905067ffffffffffffffff811115612419576124186123dc565b5b602083019150836040820283011115612435576124346123e1565b5b9250929050565b60008083601f84011261245257612451612023565b5b8235905067ffffffffffffffff81111561246f5761246e6123dc565b5b60208301915083600182028301111561248b5761248a6123e1565b5b9250929050565b60008083601f8401126124a8576124a7612023565b5b8235905067ffffffffffffffff8111156124c5576124c46123dc565b5b6020830191508360208202830111156124e1576124e06123e1565b5b9250929050565b60008060008060008060006080888a03121561250757612506612019565b5b60006125158a828b016123c7565b975050602088013567ffffffffffffffff8111156125365761253561201e565b5b6125428a828b016123e6565b9650965050604088013567ffffffffffffffff8111156125655761256461201e565b5b6125718a828b0161243c565b9450945050606088013567ffffffffffffffff8111156125945761259361201e565b5b6125a08a828b01612492565b925092505092959891949750929550565b600080602083850312156125c8576125c7612019565b5b600083013567ffffffffffffffff8111156125e6576125e561201e565b5b6125f28582860161243c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61263381611fdb565b82525050565b6126428161239e565b82525050565b60408201600082015161265e600085018261262a565b5060208201516126716020850182612639565b50505050565b60006126838383612648565b60408301905092915050565b6000602082019050919050565b60006126a7826125fe565b6126b18185612609565b93506126bc8361261a565b8060005b838110156126ed5781516126d48882612677565b97506126df8361268f565b9250506001810190506126c0565b5085935050505092915050565b60006020820190508181036000830152612714818461269c565b905092915050565b60006020828403121561273257612731612019565b5b600082013567ffffffffffffffff8111156127505761274f61201e565b5b61275c8482850161213b565b91505092915050565b61276e8161239e565b82525050565b6000606082019050818103600083015261278e8186612323565b905061279d6020830185612765565b6127aa6040830184611fe5565b949350505050565b60006127bd8261239e565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b60006020828403121561280657612805612019565b5b6000612814848285016127db565b91505092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c2070726f706160008201527f6761746552657075746174696f6e000000000000000000000000000000000000602082015250565b6000612879602e836122e8565b91506128848261281d565b604082019050919050565b600060208201905081810360008301526128a88161286c565b9050919050565b600081905092915050565b60006128c5826122dd565b6128cf81856128af565b93506128df8185602086016122f9565b80840191505092915050565b60006128f782846128ba565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297857607f821691505b60208210810361298b5761298a612931565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129cb82612169565b91506129d683612169565b92508282039050818112600084121682821360008512151617156129fd576129fc612991565b5b92915050565b6000612a0e82611fdb565b9150612a1983611fdb565b9250828201905080821115612a3157612a30612991565b5b92915050565b6000612a4282612169565b9150612a4d83612169565b925082820190508281121560008312168382126000841215161715612a7557612a74612991565b5b92915050565b6000612a8682612169565b91507f80000000000000000000000000000000000000000000000000000000000000008203612ab857612ab7612991565b5b816000039050919050565b6000612ace82611fdb565b9150612ad983611fdb565b9250828203905081811115612af157612af0612991565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20616464506f60008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b536022836122e8565b9150612b5e82612af7565b604082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000612be56025836122e8565b9150612bf082612b89565b604082019050919050565b60006020820190508181036000830152612c1481612bd8565b9050919050565b6000612c2682611fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5857612c57612991565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c93565b612cda8683612c93565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d17612d12612d0d84611fdb565b612cf2565b611fdb565b9050919050565b6000819050919050565b612d3183612cfc565b612d45612d3d82612d1e565b848454612ca0565b825550505050565b600090565b612d5a612d4d565b612d65818484612d28565b505050565b5b81811015612d8957612d7e600082612d52565b600181019050612d6b565b5050565b601f821115612dce57612d9f81612c6e565b612da884612c83565b81016020851015612db7578190505b612dcb612dc385612c83565b830182612d6a565b50505b505050565b600082821c905092915050565b6000612df160001984600802612dd3565b1980831691505092915050565b6000612e0a8383612de0565b9150826002028217905092915050565b612e248383612c63565b67ffffffffffffffff811115612e3d57612e3c61203e565b5b612e478254612960565b612e52828285612d8d565b6000601f831160018114612e815760008415612e6f578287013590505b612e798582612dfe565b865550612ee1565b601f198416612e8f86612c6e565b60005b82811015612eb757848901358255600182019150602085019450602081019050612e92565b86831015612ed45784890135612ed0601f891682612de0565b8355505b6001600288020188555050505b50505050505050565b6000612ef683856128af565b9350612f038385846120ea565b82840190509392505050565b6000612f1c828486612eea565b91508190509392505050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000612f846026836122e8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b60008135612fc7816121d7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61300984612fd0565b9350801983169250808416831791505092915050565b61302882612cfc565b61303b61303482612d1e565b8354612fdd565b8255505050565b6000813561304f816123b0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61307884612fd0565b9350801983169250808416831791505092915050565b60006130a96130a461309f8461237e565b612cf2565b61237e565b9050919050565b60006130bb8261308e565b9050919050565b60006130cd826130b0565b9050919050565b6000819050919050565b6130e7826130c2565b6130fa6130f3826130d4565b8354613058565b8255505050565b60008101600083018061311381612fba565b905061311f818461301f565b50505060018101602083018061313481613042565b905061314081846130de565b5050505050565b6131518282613101565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16022836122e8565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112613212576132116131e7565b5b80830191505092915050565b6000813561322b81612173565b80915050919050565b600061324f61324a61324584612169565b612cf2565b612169565b9050919050565b6000819050919050565b61326982613234565b61327c61327582613256565b8354612fdd565b8255505050565b600080833560016020038436030381126132a05761329f6131e7565b5b80840192508235915067ffffffffffffffff8211156132c2576132c16131ec565b5b6020830192506001820236038313156132de576132dd6131f1565b5b509250929050565b6132f1838383612e1a565b505050565b6000810160008301806133088161321e565b90506133148184613260565b50505060018101602083016133298185613283565b6133348183866132e6565b505050505050565b61334682826132f6565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006133a66028836122e8565b91506133b18261334a565b604082019050919050565b600060208201905081810360008301526133d581613399565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b60006134386027836122e8565b9150613443826133dc565b604082019050919050565b600060208201905081810360008301526134678161342b565b9050919050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b60006134ca602c836122e8565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b600061355c602d836122e8565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b600061359e83856122e8565b93506135ab8385846120ea565b6135b48361202d565b840190509392505050565b600060208201905081810360008301526135da818486613592565b90509392505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061363f6021836122e8565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b600061368082612169565b915061368b83612169565b925082820261369981612169565b91507f800000000000000000000000000000000000000000000000000000000000000084146000841216156136d1576136d0612991565b5b82820584148315176136e6576136e5612991565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372782612169565b915061373283612169565b925082613742576137416136ed565b5b600160000383147f80000000000000000000000000000000000000000000000000000000000000008314161561377b5761377a612991565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b60006137e26026836122e8565b91506137ed82613786565b604082019050919050565b60006020820190508181036000830152613811816137d5565b9050919050565b600060408201905061382d6000830185612765565b61383a6020830184611fe5565b9392505050565b60006020820190506138566000830184612765565b92915050565b60006060820190506138716000830186612765565b61387e6020830185612765565b61388b6040830184611fe5565b949350505050565b6000815190506138a2816121d7565b92915050565b6000602082840312156138be576138bd612019565b5b60006138cc84828501613893565b9150509291505056fea2646970667358221220c34fe26aec1b950c6bf2505bc08a787b81b3216e6c1ccab717b13c38b029c52964736f6c63430008180033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638b96129b1161005b5780638b96129b14610100578063da66863a1461011c578063f8300fca1461014c578063fe0d695a1461017e5761007d565b806317906c2e1461008257806317e19f24146100a057806350cde8ef146100d0575b600080fd5b61008a61019a565b6040516100979190611ff4565b60405180910390f35b6100ba60048036038101906100b59190612203565b6101a0565b6040516100c79190612295565b60405180910390f35b6100ea60048036038101906100e591906122b0565b610e0d565b6040516100f7919061235c565b60405180910390f35b61011a600480360381019061011591906124e8565b610eb9565b005b610136600480360381019061013191906125b1565b611472565b60405161014391906126fa565b60405180910390f35b6101666004803603810190610161919061271c565b61155a565b60405161017593929190612774565b60405180910390f35b610198600480360381019061019391906127f0565b611642565b005b60025481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061022957503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025f9061288f565b60405180910390fd5b600554821061027957839050610e05565b6000808660405161028a91906128eb565b9081526020016040518091039020905060008160020180549050036102b25784915050610e05565b60005b81600301805490508110156103e65760008260030182815481106102dc576102db612902565b5b90600052602060002090600202016000015412156103d9576103cb8783600301838154811061030e5761030d612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461034190612960565b80601f016020809104026020016040519081016040528092919081815260200182805461036d90612960565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505081525050888888611717565b866103d691906129c0565b95505b80806001019150506102b5565b5060005b816003018054905081101561051b57600082600301828154811061041157610410612902565b5b906000526020600020906002020160000154131561050e576105008783600301838154811061044357610442612902565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201805461047690612960565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612960565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b505050505081525050888888611717565b8661050b91906129c0565b95505b80806001019150506103ea565b506000851315610807576107e6816040518060a001604052908160008201805461054490612960565b80601f016020809104026020016040519081016040528092919081815260200182805461057090612960565b80156105bd5780601f10610592576101008083540402835291602001916105bd565b820191906000526020600020905b8154815290600101906020018083116105a057829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156106d35783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610641565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107ce57838290600052602060002090600202016040518060400160405290816000820154815260200160018201805461073d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461076990612960565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152505081526020019060010190610700565b50505050815260200160048201548152505086611989565b50848160040160008282546107fb9190612a03565b92505081905550610e03565b60008582600401546108199190612a37565b12610b0a57610adf816040518060a001604052908160008201805461083d90612960565b80601f016020809104026020016040519081016040528092919081815260200182805461086990612960565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156109cc5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001906001019061093a565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610ac7578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610a3690612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6290612960565b8015610aaf5780601f10610a8457610100808354040283529160200191610aaf565b820191906000526020600020905b815481529060010190602001808311610a9257829003601f168201915b505050505081525050815260200190600101906109f9565b50505050815260200160048201548152505086611989565b915084610aeb90612a7b565b816004016000828254610afe9190612ac3565b92505081905550610e02565b848160040154610b1a9190612a37565b9150610dea816040518060a0016040529081600082018054610b3b90612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6790612960565b8015610bb45780601f10610b8957610100808354040283529160200191610bb4565b820191906000526020600020905b815481529060010190602001808311610b9757829003601f168201915b505050505081526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610cca5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505081526020019060010190610c38565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015610dc5578382906000526020600020906002020160405180604001604052908160008201548152602001600182018054610d3490612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6090612960565b8015610dad5780601f10610d8257610100808354040283529160200191610dad565b820191906000526020600020905b815481529060010190602001808311610d9057829003601f168201915b50505050508152505081526020019060010190610cf7565b5050505081526020016004820154815250508260040154610de590612a7b565b611989565b82610df59190612a37565b9150600081600401819055505b5b505b949350505050565b60018181548110610e1d57600080fd5b906000526020600020016000915090508054610e3890612960565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6490612960565b8015610eb15780601f10610e8657610100808354040283529160200191610eb1565b820191906000526020600020905b815481529060010190602001808311610e9457829003601f168201915b505050505081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090612b69565b60405180910390fd5b60008686905011610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690612bfb565b60405180910390fd5b60026000815480929190610fa290612c1b565b91905055506001848490918060018154018082558091505060019003906000526020600020016000909192909192909192909192509182610fe4929190612e1a565b506000808585604051610ff8929190612f0f565b908152602001604051809103902090506000816002018054905014611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612f9a565b60405180910390fd5b878160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084848260000191826110a8929190612e1a565b50600080600090505b88889050811015611147578888828181106110cf576110ce612902565b5b90506040020160000135826110e49190612a03565b9150826002018989838181106110fd576110fc612902565b5b905060400201908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111389190613147565b505080806001019150506110b1565b50620f4240811461118d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611184906131c7565b60405180910390fd5b60005b8484905081101561120857826003018585838181106111b2576111b1612902565b5b90506020028101906111c491906131f6565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111f9919061333c565b50508080600101915050611190565b5060008060005b846003018054905081101561132c57600085600301828154811061123657611235612902565b5b90600052602060002090600202016000015490507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906133bc565b60405180910390fd5b620f42408113156112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea9061344e565b60405180910390fd5b600081131561130f5780846113089190612a37565b935061131e565b808361131b9190612a37565b92505b50808060010191505061120f565b50620f4240821315611373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136a906134e0565b60405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0bdc08112156113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613572565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c253c0b89896040518363ffffffff1660e01b81526004016114339291906135bf565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b505050505050505050505050505050565b60606000808484604051611487929190612f0f565b9081526020016040518091039020905080600201805480602002602001604051908101604052809291908181526020016000905b8282101561154d5783829060005260206000209060020201604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050815260200190600101906114bb565b5050505091505092915050565b60008180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461159390612960565b80601f01602080910402602001604051908101604052809291908181526020018280546115bf90612960565b801561160c5780601f106115e15761010080835404028352916020019161160c565b820191906000526020600020905b8154815290600101906020018083116115ef57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154905083565b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613655565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424085600001518561172d9190613675565b611737919061371c565b905060008560200151510361184057600081121561178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611781906137f8565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611809929190613818565b600060405180830381600087803b15801561182357600080fd5b505af1158015611837573d6000803e3d6000fd5b50505050611980565b600060038760405161185291906128eb565b9081526020016040518091039020866020015160405161187291906128eb565b908152602001604051809103902054905083156118df5760008212156118ba578061189c90612a7b565b82136118b157806118ac90612a7b565b6118b3565b815b91506118de565b806118c490612a7b565b82126118d957806118d490612a7b565b6118db565b815b91505b5b600061191887602001518487806119065750600087148015611905575060008a60000151125b5b6001886119139190612a03565b6101a0565b9050808361192691906129c0565b92508260038960405161193991906128eb565b9081526020016040518091039020886020015160405161195991906128eb565b908152602001604051809103902060008282546119769190612a37565b9250508190555050505b95945050505050565b60008060005b846040015151811015611a5857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e866040015183815181106119f1576119f0612902565b5b6020026020010151602001516040518263ffffffff1660e01b8152600401611a199190613841565b600060405180830381600087803b158015611a3357600080fd5b505af1158015611a47573d6000803e3d6000fd5b50505050808060010191505061198f565b5060005b846040015151811015611fd357600085604001518281518110611a8257611a81612902565b5b6020026020010151905060006001876040015151611aa09190612ac3565b831015611ada57620f4240826000015187611abb9190613675565b611ac5919061371c565b90508084611ad39190612a37565b9350611ae9565b8386611ae691906129c0565b90505b6000811315611c3f57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460200151846040518463ffffffff1660e01b8152600401611b779392919061385c565b600060405180830381600087803b158015611b9157600080fd5b505af1158015611ba5573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcb4888e83602001516040518263ffffffff1660e01b8152600401611c089190613841565b600060405180830381600087803b158015611c2257600080fd5b505af1158015611c36573d6000803e3d6000fd5b50505050611fc4565b80611c4990612a7b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823184602001516040518263ffffffff1660e01b8152600401611ca89190613841565b602060405180830381865afa158015611cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce991906138a8565b1015611f0257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823183602001516040518263ffffffff1660e01b8152600401611d4e9190613841565b602060405180830381865afa158015611d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8f91906138a8565b81611d9a9190612a37565b85611da59190612a37565b9450600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823187602001516040518263ffffffff1660e01b8152600401611e6c9190613841565b602060405180830381865afa158015611e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ead91906138a8565b6040518463ffffffff1660e01b8152600401611ecb9392919061385c565b600060405180830381600087803b158015611ee557600080fd5b505af1158015611ef9573d6000803e3d6000fd5b50505050611fc3565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8360200151600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611f7290612a7b565b6040518463ffffffff1660e01b8152600401611f909392919061385c565b600060405180830381600087803b158015611faa57600080fd5b505af1158015611fbe573d6000803e3d6000fd5b505050505b5b50508080600101915050611a5c565b505092915050565b6000819050919050565b611fee81611fdb565b82525050565b60006020820190506120096000830184611fe5565b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120768261202d565b810181811067ffffffffffffffff821117156120955761209461203e565b5b80604052505050565b60006120a861200f565b90506120b4828261206d565b919050565b600067ffffffffffffffff8211156120d4576120d361203e565b5b6120dd8261202d565b9050602081019050919050565b82818337600083830152505050565b600061210c612107846120b9565b61209e565b90508281526020810184848401111561212857612127612028565b5b6121338482856120ea565b509392505050565b600082601f8301126121505761214f612023565b5b81356121608482602086016120f9565b91505092915050565b6000819050919050565b61217c81612169565b811461218757600080fd5b50565b60008135905061219981612173565b92915050565b60008115159050919050565b6121b48161219f565b81146121bf57600080fd5b50565b6000813590506121d1816121ab565b92915050565b6121e081611fdb565b81146121eb57600080fd5b50565b6000813590506121fd816121d7565b92915050565b6000806000806080858703121561221d5761221c612019565b5b600085013567ffffffffffffffff81111561223b5761223a61201e565b5b6122478782880161213b565b94505060206122588782880161218a565b9350506040612269878288016121c2565b925050606061227a878288016121ee565b91505092959194509250565b61228f81612169565b82525050565b60006020820190506122aa6000830184612286565b92915050565b6000602082840312156122c6576122c5612019565b5b60006122d4848285016121ee565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123175780820151818401526020810190506122fc565b60008484015250505050565b600061232e826122dd565b61233881856122e8565b93506123488185602086016122f9565b6123518161202d565b840191505092915050565b600060208201905081810360008301526123768184612323565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a98261237e565b9050919050565b6123b98161239e565b81146123c457600080fd5b50565b6000813590506123d6816123b0565b92915050565b600080fd5b600080fd5b60008083601f8401126123fc576123fb612023565b5b8235905067ffffffffffffffff811115612419576124186123dc565b5b602083019150836040820283011115612435576124346123e1565b5b9250929050565b60008083601f84011261245257612451612023565b5b8235905067ffffffffffffffff81111561246f5761246e6123dc565b5b60208301915083600182028301111561248b5761248a6123e1565b5b9250929050565b60008083601f8401126124a8576124a7612023565b5b8235905067ffffffffffffffff8111156124c5576124c46123dc565b5b6020830191508360208202830111156124e1576124e06123e1565b5b9250929050565b60008060008060008060006080888a03121561250757612506612019565b5b60006125158a828b016123c7565b975050602088013567ffffffffffffffff8111156125365761253561201e565b5b6125428a828b016123e6565b9650965050604088013567ffffffffffffffff8111156125655761256461201e565b5b6125718a828b0161243c565b9450945050606088013567ffffffffffffffff8111156125945761259361201e565b5b6125a08a828b01612492565b925092505092959891949750929550565b600080602083850312156125c8576125c7612019565b5b600083013567ffffffffffffffff8111156125e6576125e561201e565b5b6125f28582860161243c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61263381611fdb565b82525050565b6126428161239e565b82525050565b60408201600082015161265e600085018261262a565b5060208201516126716020850182612639565b50505050565b60006126838383612648565b60408301905092915050565b6000602082019050919050565b60006126a7826125fe565b6126b18185612609565b93506126bc8361261a565b8060005b838110156126ed5781516126d48882612677565b97506126df8361268f565b9250506001810190506126c0565b5085935050505092915050565b60006020820190508181036000830152612714818461269c565b905092915050565b60006020828403121561273257612731612019565b5b600082013567ffffffffffffffff8111156127505761274f61201e565b5b61275c8482850161213b565b91505092915050565b61276e8161239e565b82525050565b6000606082019050818103600083015261278e8186612323565b905061279d6020830185612765565b6127aa6040830184611fe5565b949350505050565b60006127bd8261239e565b9050919050565b6127cd816127b2565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b60006020828403121561280657612805612019565b5b6000612814848285016127db565b91505092915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c2070726f706160008201527f6761746552657075746174696f6e000000000000000000000000000000000000602082015250565b6000612879602e836122e8565b91506128848261281d565b604082019050919050565b600060208201905081810360008301526128a88161286c565b9050919050565b600081905092915050565b60006128c5826122dd565b6128cf81856128af565b93506128df8185602086016122f9565b80840191505092915050565b60006128f782846128ba565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061297857607f821691505b60208210810361298b5761298a612931565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129cb82612169565b91506129d683612169565b92508282039050818112600084121682821360008512151617156129fd576129fc612991565b5b92915050565b6000612a0e82611fdb565b9150612a1983611fdb565b9250828201905080821115612a3157612a30612991565b5b92915050565b6000612a4282612169565b9150612a4d83612169565b925082820190508281121560008312168382126000841215161715612a7557612a74612991565b5b92915050565b6000612a8682612169565b91507f80000000000000000000000000000000000000000000000000000000000000008203612ab857612ab7612991565b5b816000039050919050565b6000612ace82611fdb565b9150612ad983611fdb565b9250828203905081811115612af157612af0612991565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20616464506f60008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b536022836122e8565b9150612b5e82612af7565b604082019050919050565b60006020820190508181036000830152612b8281612b46565b9050919050565b7f506f7374206d75737420696e636c756465206174206c65617374206f6e65206160008201527f7574686f72000000000000000000000000000000000000000000000000000000602082015250565b6000612be56025836122e8565b9150612bf082612b89565b604082019050919050565b60006020820190508181036000830152612c1481612bd8565b9050919050565b6000612c2682611fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c5857612c57612991565b5b600182019050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612c93565b612cda8683612c93565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d17612d12612d0d84611fdb565b612cf2565b611fdb565b9050919050565b6000819050919050565b612d3183612cfc565b612d45612d3d82612d1e565b848454612ca0565b825550505050565b600090565b612d5a612d4d565b612d65818484612d28565b505050565b5b81811015612d8957612d7e600082612d52565b600181019050612d6b565b5050565b601f821115612dce57612d9f81612c6e565b612da884612c83565b81016020851015612db7578190505b612dcb612dc385612c83565b830182612d6a565b50505b505050565b600082821c905092915050565b6000612df160001984600802612dd3565b1980831691505092915050565b6000612e0a8383612de0565b9150826002028217905092915050565b612e248383612c63565b67ffffffffffffffff811115612e3d57612e3c61203e565b5b612e478254612960565b612e52828285612d8d565b6000601f831160018114612e815760008415612e6f578287013590505b612e798582612dfe565b865550612ee1565b601f198416612e8f86612c6e565b60005b82811015612eb757848901358255600182019150602085019450602081019050612e92565b86831015612ed45784890135612ed0601f891682612de0565b8355505b6001600288020188555050505b50505050505050565b6000612ef683856128af565b9350612f038385846120ea565b82840190509392505050565b6000612f1c828486612eea565b91508190509392505050565b7f4120706f73742077697468207468697320706f7374496420616c72656164792060008201527f6578697374730000000000000000000000000000000000000000000000000000602082015250565b6000612f846026836122e8565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b60008135612fc7816121d7565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61300984612fd0565b9350801983169250808416831791505092915050565b61302882612cfc565b61303b61303482612d1e565b8354612fdd565b8255505050565b6000813561304f816123b0565b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff61307884612fd0565b9350801983169250808416831791505092915050565b60006130a96130a461309f8461237e565b612cf2565b61237e565b9050919050565b60006130bb8261308e565b9050919050565b60006130cd826130b0565b9050919050565b6000819050919050565b6130e7826130c2565b6130fa6130f3826130d4565b8354613058565b8255505050565b60008101600083018061311381612fba565b905061311f818461301f565b50505060018101602083018061313481613042565b905061314081846130de565b5050505050565b6131518282613101565b5050565b7f417574686f722077656967687473206d7573742073756d20746f20313030303060008201527f3030000000000000000000000000000000000000000000000000000000000000602082015250565b60006131b16022836122e8565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b600080fd5b600080fd5b600080fd5b600082356001604003833603038112613212576132116131e7565b5b80830191505092915050565b6000813561322b81612173565b80915050919050565b600061324f61324a61324584612169565b612cf2565b612169565b9050919050565b6000819050919050565b61326982613234565b61327c61327582613256565b8354612fdd565b8255505050565b600080833560016020038436030381126132a05761329f6131e7565b5b80840192508235915067ffffffffffffffff8211156132c2576132c16131ec565b5b6020830192506001820236038313156132de576132dd6131f1565b5b509250929050565b6132f1838383612e1a565b505050565b6000810160008301806133088161321e565b90506133148184613260565b50505060018101602083016133298185613283565b6133348183866132e6565b505050505050565b61334682826132f6565b5050565b7f45616368206369746174696f6e20776569676874206d757374206265203e3d2060008201527f2d31303030303030000000000000000000000000000000000000000000000000602082015250565b60006133a66028836122e8565b91506133b18261334a565b604082019050919050565b600060208201905081810360008301526133d581613399565b9050919050565b7f45616368206369746174696f6e20776569676874206d757374206265203c3d2060008201527f3130303030303000000000000000000000000000000000000000000000000000602082015250565b60006134386027836122e8565b9150613443826133dc565b604082019050919050565b600060208201905081810360008301526134678161342b565b9050919050565b7f53756d206f6620706f736974697665206369746174696f6e73206d757374206260008201527f65203c3d20313030303030300000000000000000000000000000000000000000602082015250565b60006134ca602c836122e8565b91506134d58261346e565b604082019050919050565b600060208201905081810360008301526134f9816134bd565b9050919050565b7f53756d206f66206e65676174697665206369746174696f6e73206d757374206260008201527f65203e3d202d3130303030303000000000000000000000000000000000000000602082015250565b600061355c602d836122e8565b915061356782613500565b604082019050919050565b6000602082019050818103600083015261358b8161354f565b9050919050565b600061359e83856122e8565b93506135ab8385846120ea565b6135b48361202d565b840190509392505050565b600060208201905081810360008301526135da818486613592565b90509392505050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061363f6021836122e8565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b600061368082612169565b915061368b83612169565b925082820261369981612169565b91507f800000000000000000000000000000000000000000000000000000000000000084146000841216156136d1576136d0612991565b5b82820584148315176136e6576136e5612991565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372782612169565b915061373283612169565b925082613742576137416136ed565b5b600160000383147f80000000000000000000000000000000000000000000000000000000000000008314161561377b5761377a612991565b5b828205905092915050565b7f4c65616368696e672066726f6d20696e63696e657261746f7220697320666f7260008201527f62696464656e0000000000000000000000000000000000000000000000000000602082015250565b60006137e26026836122e8565b91506137ed82613786565b604082019050919050565b60006020820190508181036000830152613811816137d5565b9050919050565b600060408201905061382d6000830185612765565b61383a6020830184611fe5565b9392505050565b60006020820190506138566000830184612765565b92915050565b60006060820190506138716000830186612765565b61387e6020830185612765565b61388b6040830184611fe5565b949350505050565b6000815190506138a2816121d7565b92915050565b6000602082840312156138be576138bd612019565b5b60006138cc84828501613893565b9150509291505056fea2646970667358221220c34fe26aec1b950c6bf2505bc08a787b81b3216e6c1ccab717b13c38b029c52964736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/frontend/contractArtifacts/Onboarding.json b/frontend/contractArtifacts/Onboarding.json index 726ae3b..ea791b7 100644 --- a/frontend/contractArtifacts/Onboarding.json +++ b/frontend/contractArtifacts/Onboarding.json @@ -219,13 +219,7 @@ } ], "name": "onValidate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [], "stateMutability": "nonpayable", "type": "function" }, @@ -478,8 +472,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b50604051620036be380380620036be8339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b60805161345862000266600039600081816104dc01528181610a4901528181610b1901528181610c3601528181610e490152818161106301526110f501526134586000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611883565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b9190611964565b6104da565b005b34801561013e57600080fd5b5061014761067a565b60405161015491906119c6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a37565b610680565b60405161019191906119c6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611aab565b6106ff565b6040516101d49796959493929190611c09565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611cb2565b61088b565b005b610220600480360381019061021b9190611d14565b610cf6565b005b34801561022e57600080fd5b50610237610e3f565b60405161024491906119c6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d88565b610e45565b60405161028191906119c6565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611e22565b6111f3565b005b3480156102bf57600080fd5b506102c8611367565b6040516102d591906119c6565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611aab565b61136d565b604051610313929190611e62565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611ee1565b611391565b005b34801561035157600080fd5b5061036c60048036038101906103679190611aab565b6115c9565b60405161037c9493929190611f76565b60405180910390f35b34801561039157600080fd5b5061039a611626565b6040516103a791906119c6565b60405180910390f35b6003543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90612007565b60405180910390fd5b60006007600081548092919061040a90612056565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047b61162c565b816003018190555083838260040191826104969291906122e4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104cc929190611e62565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055f90612426565b60405180910390fd5b600082116105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a290612492565b60405180910390fd5b6000600160008154809291906105c090612056565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261063491906124b2565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161066b91906119c6565b60405180910390a15050505050565b60075481565b60008083838101906106929190611aab565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106e9929190611e62565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461076790612107565b80601f016020809104026020016040519081016040528092919081815260200182805461079390612107565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b5050505050908060050180546107f590612107565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612107565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108b6576108b5611ae7565b5b8160020160009054906101000a900460ff1660038111156108da576108d9611ae7565b5b1461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612532565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561095c5761095b611ae7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561099a576109996120a9565b5b6040519080825280602002602001820160405280156109d357816020015b6109c06117e4565b8152602001906001900390816109b85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a3c57610a3b612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610aaa939291906128ef565b600060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610b0d92919061293b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b649190612993565b8660010154610b7391906129c4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610bbd91906119c6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bef989796959493929190612b24565b60206040518083038185885af1158015610c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c329190612bc7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610cbc9493929190612bf4565b600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610d0b90612056565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d8691906119c6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610db5959493929190612c8e565b60206040518083038185885af1158015610dd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df89190612bc7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e2f91906119c6565b60405180910390a1505050505050565b60035481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d55565b60405180910390fd5b60008383810190610ee69190611aab565b90506000600660008381526020019081526020016000209050881580610f0a575087155b15610f95578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f5e9190612993565b9081150290604051600060405180830381858888f19350505050158015610f89573d6000803e3d6000fd5b506001925050506111e9565b60606000600167ffffffffffffffff811115610fb457610fb36120a9565b5b604051908082528060200260200182016040528015610fed57816020015b610fda6117e4565b815260200190600190039081610fd25790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061105657611055612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110c193929190612e9c565b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111409190612993565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b815260040161119c9796959493929190612f0e565b60206040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612bc7565b5060009450505050505b9695505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300c565b60405180910390fd5b8060030160009054906101000a900460ff16156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061309e565b60405180910390fd5b806002015442111561131257814261130591906124b2565b816002018190555061132b565b81816002015461132291906124b2565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161135a91906119c6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156113bc576113bb611ae7565b5b8160020160009054906101000a900460ff1660038111156113e0576113df611ae7565b5b14611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061310a565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c39061319c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114f4576114f3611ae7565b5b0217905550858583600501918261150c9291906122e4565b5060005b84849050811015611588578260060185858381811061153257611531612552565b5b905060200281019061154491906131cb565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115799190613377565b50508080600101915050611510565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516115b891906119c6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061163661166f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116f35760008082815260200190815260200160002060030160009054906101000a900460ff166116e6576000808281526020019081526020016000206002015442116116e65760008082815260200190815260200160002060010154826116e391906124b2565b91505b8080600101915050611675565b5060008111611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906133d1565b60405180910390fd5b6000814461174591906133f1565b9050600080600090505b6001548110156117dd5760008082815260200190815260200160002060030160009054906101000a900460ff166117d0576000808281526020019081526020016000206002015442116117d05760008082815260200190815260200160002060010154826117bd91906124b2565b9150828211156117cf578094506117dd565b5b808060010191505061174f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118435761184261181e565b5b8235905067ffffffffffffffff8111156118605761185f611823565b5b60208301915083600182028301111561187c5761187b611828565b5b9250929050565b6000806020838503121561189a57611899611814565b5b600083013567ffffffffffffffff8111156118b8576118b7611819565b5b6118c48582860161182d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118fb826118d0565b9050919050565b61190b816118f0565b811461191657600080fd5b50565b60008135905061192881611902565b92915050565b6000819050919050565b6119418161192e565b811461194c57600080fd5b50565b60008135905061195e81611938565b92915050565b60008060006060848603121561197d5761197c611814565b5b600061198b86828701611919565b935050602061199c8682870161194f565b92505060406119ad8682870161194f565b9150509250925092565b6119c08161192e565b82525050565b60006020820190506119db60008301846119b7565b92915050565b60008083601f8401126119f7576119f661181e565b5b8235905067ffffffffffffffff811115611a1457611a13611823565b5b602083019150836001820283011115611a3057611a2f611828565b5b9250929050565b60008060008060608587031215611a5157611a50611814565b5b6000611a5f8782880161194f565b9450506020611a708782880161194f565b935050604085013567ffffffffffffffff811115611a9157611a90611819565b5b611a9d878288016119e1565b925092505092959194509250565b600060208284031215611ac157611ac0611814565b5b6000611acf8482850161194f565b91505092915050565b611ae1816118f0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b2757611b26611ae7565b5b50565b6000819050611b3882611b16565b919050565b6000611b4882611b2a565b9050919050565b611b5881611b3d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b98578082015181840152602081019050611b7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc082611b5e565b611bca8185611b69565b9350611bda818560208601611b7a565b611be381611ba4565b840191505092915050565b60008115159050919050565b611c0381611bee565b82525050565b600060e082019050611c1e600083018a611ad8565b611c2b60208301896119b7565b611c386040830188611b4f565b611c4560608301876119b7565b8181036080830152611c578186611bb5565b905081810360a0830152611c6b8185611bb5565b9050611c7a60c0830184611bfa565b98975050505050505050565b611c8f81611bee565b8114611c9a57600080fd5b50565b600081359050611cac81611c86565b92915050565b60008060408385031215611cc957611cc8611814565b5b6000611cd78582860161194f565b9250506020611ce885828601611c9d565b9150509250929050565b600081905082602060030282011115611d0e57611d0d611828565b5b92915050565b60008060008060a08587031215611d2e57611d2d611814565b5b6000611d3c8782880161194f565b945050602085013567ffffffffffffffff811115611d5d57611d5c611819565b5b611d698782880161182d565b93509350506040611d7c87828801611cf2565b91505092959194509250565b60008060008060008060a08789031215611da557611da4611814565b5b6000611db389828a01611c9d565b9650506020611dc489828a01611c9d565b9550506040611dd589828a0161194f565b9450506060611de689828a0161194f565b935050608087013567ffffffffffffffff811115611e0757611e06611819565b5b611e1389828a016119e1565b92509250509295509295509295565b60008060408385031215611e3957611e38611814565b5b6000611e478582860161194f565b9250506020611e588582860161194f565b9150509250929050565b6000604082019050611e7760008301856119b7565b611e8460208301846119b7565b9392505050565b60008083601f840112611ea157611ea061181e565b5b8235905067ffffffffffffffff811115611ebe57611ebd611823565b5b602083019150836020820283011115611eda57611ed9611828565b5b9250929050565b600080600080600060608688031215611efd57611efc611814565b5b6000611f0b8882890161194f565b955050602086013567ffffffffffffffff811115611f2c57611f2b611819565b5b611f388882890161182d565b9450945050604086013567ffffffffffffffff811115611f5b57611f5a611819565b5b611f6788828901611e8b565b92509250509295509295909350565b6000608082019050611f8b6000830187611ad8565b611f9860208301866119b7565b611fa560408301856119b7565b611fb26060830184611bfa565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611ff1601083611b69565b9150611ffc82611fbb565b602082019050919050565b6000602082019050818103600083015261202081611fe4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120618261192e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209357612092612027565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061211f57607f821691505b602082108103612132576121316120d8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261219a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261215d565b6121a4868361215d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121e16121dc6121d78461192e565b6121bc565b61192e565b9050919050565b6000819050919050565b6121fb836121c6565b61220f612207826121e8565b84845461216a565b825550505050565b600090565b612224612217565b61222f8184846121f2565b505050565b5b818110156122535761224860008261221c565b600181019050612235565b5050565b601f8211156122985761226981612138565b6122728461214d565b81016020851015612281578190505b61229561228d8561214d565b830182612234565b50505b505050565b600082821c905092915050565b60006122bb6000198460080261229d565b1980831691505092915050565b60006122d483836122aa565b9150826002028217905092915050565b6122ee838361209e565b67ffffffffffffffff811115612307576123066120a9565b5b6123118254612107565b61231c828285612257565b6000601f83116001811461234b5760008415612339578287013590505b61234385826122c8565b8655506123ab565b601f19841661235986612138565b60005b828110156123815784890135825560018201915060208501945060208101905061235c565b8683101561239e578489013561239a601f8916826122aa565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000612410603683611b69565b915061241b826123b4565b604082019050919050565b6000602082019050818103600083015261243f81612403565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061247c601183611b69565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b60006124bd8261192e565b91506124c88361192e565b92508282019050808211156124e0576124df612027565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061251c602083611b69565b9150612527826124e6565b602082019050919050565b6000602082019050818103600083015261254b8161250f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125b68161192e565b82525050565b6125c5816118f0565b82525050565b6040820160008201516125e160008501826125ad565b5060208201516125f460208501826125bc565b50505050565b600061260683836125cb565b60408301905092915050565b6000602082019050919050565b600061262a82612581565b612634818561258c565b935061263f8361259d565b8060005b8381101561267057815161265788826125fa565b975061266283612612565b925050600181019050612643565b5085935050505092915050565b6000815461268a81612107565b6126948186611b69565b945060018216600081146126af57600181146126c5576126f8565b60ff1983168652811515602002860193506126f8565b6126ce85612138565b60005b838110156126f0578154818901526001820191506020810190506126d1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061275c61275783612732565b61273f565b9050919050565b6000819050919050565b61277681612763565b82525050565b600082825260208201905092915050565b6000815461279a81612107565b6127a4818661277c565b945060018216600081146127bf57600181146127d557612808565b60ff198316865281151560200286019350612808565b6127de85612138565b60005b83811015612800578154818901526001820191506020810190506127e1565b808801955050505b50505092915050565b600060408301600080840154905061282881612749565b612835600087018261276d565b5060018401858303602087015261284c838261278d565b925050819250505092915050565b60006128668383612811565b905092915050565b6000600282019050919050565b600061288682612701565b612890818561270c565b9350836020820285016128a28561271d565b8060005b858110156128dd578484038952816128be858261285a565b94506128c98361286e565b925060208a019950506001810190506128a6565b50829750879550505050505092915050565b60006060820190508181036000830152612909818661261f565b9050818103602083015261291d818561267d565b90508181036040830152612931818461287b565b9050949350505050565b600060408201905061295060008301856119b7565b61295d6020830184611bfa565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299e8261192e565b91506129a98361192e565b9250826129b9576129b8612964565b5b828204905092915050565b60006129cf8261192e565b91506129da8361192e565b92508282039050818111156129f2576129f1612027565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a2483836125ad565b60208301905092915050565b6000602082019050919050565b612a46816129f8565b612a508184612a03565b9250612a5b82612a0e565b8060005b83811015612a8c578151612a738782612a18565b9650612a7e83612a30565b925050600181019050612a5f565b505050505050565b6000819050919050565b6000612ab9612ab4612aaf84612a94565b6121bc565b61192e565b9050919050565b612ac981612a9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612af682612acf565b612b008185612ada565b9350612b10818560208601611b7a565b612b1981611ba4565b840191505092915050565b6000610140820190508181036000830152612b3f818b61267d565b9050612b4e602083018a6119b7565b612b5b6040830189612a3d565b612b686080830188612a3d565b612b7560c0830187612ac0565b612b8260e0830186611bfa565b612b90610100830185611bfa565b818103610120830152612ba38184612aeb565b90509998505050505050505050565b600081519050612bc181611938565b92915050565b600060208284031215612bdd57612bdc611814565b5b6000612beb84828501612bb2565b91505092915050565b6000608082019050612c0960008301876119b7565b612c166020830186611ad8565b612c2360408301856119b7565b612c306060830184611bfa565b95945050505050565b82818337600083830152505050565b6000612c548385611b69565b9350612c61838584612c39565b612c6a83611ba4565b840190509392505050565b82818337505050565b612c8a60608383612c75565b5050565b600060c0820190508181036000830152612ca9818789612c48565b9050612cb86020830186612c7e565b612cc56080830185611bfa565b81810360a0830152612cd78184612aeb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d3f603183611b69565b9150612d4a82612ce3565b604082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d9b82611b5e565b612da5818561277c565b9350612db5818560208601611b7a565b612dbe81611ba4565b840191505092915050565b6000604083016000830151612de1600086018261276d565b5060208301518482036020860152612df98282612d90565b9150508091505092915050565b6000612e128383612dc9565b905092915050565b6000602082019050919050565b6000612e3282612d75565b612e3c818561270c565b935083602082028501612e4e85612d80565b8060005b85811015612e8a5784840389528151612e6b8582612e06565b9450612e7683612e1a565b925060208a01995050600181019050612e52565b50829750879550505050505092915050565b60006060820190508181036000830152612eb6818661261f565b90508181036020830152612eca818561267d565b90508181036040830152612ede8184612e27565b9050949350505050565b50565b6000612ef8600083612ada565b9150612f0382612ee8565b600082019050919050565b6000610140820190508181036000830152612f29818a61267d565b9050612f3860208301896119b7565b612f456040830188612a3d565b612f526080830187612a3d565b612f5f60c0830186612ac0565b612f6c60e0830185611bfa565b612f7a610100830184611bfa565b818103610120830152612f8c81612eeb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612ff6603383611b69565b915061300182612f9a565b604082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483611b69565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130f4601883611b69565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613186603a83611b69565b91506131918261312a565b604082019050919050565b600060208201905081810360008301526131b581613179565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131e7576131e66131bc565b5b80830191505092915050565b6131fc81612763565b811461320757600080fd5b50565b60008135613217816131f3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61325984613220565b9350801983169250808416831791505092915050565b600061328a61328561328084612763565b6121bc565b612763565b9050919050565b6000819050919050565b6132a48261326f565b6132b76132b082613291565b835461322d565b8255505050565b600080833560016020038436030381126132db576132da6131bc565b5b80840192508235915067ffffffffffffffff8211156132fd576132fc6131c1565b5b602083019250600182023603831315613319576133186131c6565b5b509250929050565b61332c8383836122e4565b505050565b6000810160008301806133438161320a565b905061334f818461329b565b505050600181016020830161336481856132be565b61336f818386613321565b505050505050565b6133818282613331565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006133bb601a83611b69565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261192e565b91506134078361192e565b92508261341757613416612964565b5b82820690509291505056fea26469706673582212207f4cb2aece81c4e0f14f3898d320d31a0a30f388e4626c7cc7da922dc69e5a6064736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102de578063d0fae95f1461031c578063d5a44f8614610345578063d76b679414610385576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c001461028a578063c4a9e116146102b3576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611883565b6103b0565b005b34801561011557600080fd5b50610130600480360381019061012b9190611964565b6104da565b005b34801561013e57600080fd5b5061014761067a565b60405161015491906119c6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a37565b610680565b60405161019191906119c6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611aab565b6106ff565b6040516101d49796959493929190611c09565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611cb2565b61088b565b005b610220600480360381019061021b9190611d14565b610cf6565b005b34801561022e57600080fd5b50610237610e3f565b60405161024491906119c6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d88565b610e45565b60405161028191906119c6565b60405180910390f35b34801561029657600080fd5b506102b160048036038101906102ac9190611e22565b6111f3565b005b3480156102bf57600080fd5b506102c8611367565b6040516102d591906119c6565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190611aab565b61136d565b604051610313929190611e62565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190611ee1565b611391565b005b34801561035157600080fd5b5061036c60048036038101906103679190611aab565b6115c9565b60405161037c9493929190611f76565b60405180910390f35b34801561039157600080fd5b5061039a611626565b6040516103a791906119c6565b60405180910390f35b6003543410156103f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ec90612007565b60405180910390fd5b60006007600081548092919061040a90612056565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061047b61162c565b816003018190555083838260040191826104969291906122e4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104cc929190611e62565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055f90612426565b60405180910390fd5b600082116105ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a290612492565b60405180910390fd5b6000600160008154809291906105c090612056565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838160010181905550824261063491906124b2565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161066b91906119c6565b60405180910390a15050505050565b60075481565b60008083838101906106929190611aab565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106e9929190611e62565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461076790612107565b80601f016020809104026020016040519081016040528092919081815260200182805461079390612107565b80156107e05780601f106107b5576101008083540402835291602001916107e0565b820191906000526020600020905b8154815290600101906020018083116107c357829003601f168201915b5050505050908060050180546107f590612107565b80601f016020809104026020016040519081016040528092919081815260200182805461082190612107565b801561086e5780601f106108435761010080835404028352916020019161086e565b820191906000526020600020905b81548152906001019060200180831161085157829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108b6576108b5611ae7565b5b8160020160009054906101000a900460ff1660038111156108da576108d9611ae7565b5b1461091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190612532565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561095c5761095b611ae7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561099a576109996120a9565b5b6040519080825280602002602001820160405280156109d357816020015b6109c06117e4565b8152602001906001900390816109b85790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a3c57610a3b612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610aaa939291906128ef565b600060405180830381600087803b158015610ac457600080fd5b505af1158015610ad8573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610b0d92919061293b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b649190612993565b8660010154610b7391906129c4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610bbd91906119c6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bef989796959493929190612b24565b60206040518083038185885af1158015610c0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c329190612bc7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610cbc9493929190612bf4565b600060405180830381600087803b158015610cd657600080fd5b505af1158015610cea573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610d0b90612056565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d8691906119c6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610db5959493929190612c8e565b60206040518083038185885af1158015610dd3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df89190612bc7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e2f91906119c6565b60405180910390a1505050505050565b60035481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecc90612d55565b60405180910390fd5b60008383810190610ee69190611aab565b90506000600660008381526020019081526020016000209050881580610f0a575087155b15610f95578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f5e9190612993565b9081150290604051600060405180830381858888f19350505050158015610f89573d6000803e3d6000fd5b506001925050506111e9565b60606000600167ffffffffffffffff811115610fb457610fb36120a9565b5b604051908082528060200260200182016040528015610fed57816020015b610fda6117e4565b815260200190600190039081610fd25790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061105657611055612552565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110c193929190612e9c565b600060405180830381600087803b1580156110db57600080fd5b505af11580156110ef573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111409190612993565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b815260040161119c9796959493929190612f0e565b60206040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612bc7565b5060009450505050505b9695505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112929061300c565b60405180910390fd5b8060030160009054906101000a900460ff16156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061309e565b60405180910390fd5b806002015442111561131257814261130591906124b2565b816002018190555061132b565b81816002015461132291906124b2565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161135a91906119c6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b6000600660008781526020019081526020016000209050600060038111156113bc576113bb611ae7565b5b8160020160009054906101000a900460ff1660038111156113e0576113df611ae7565b5b14611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061310a565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c39061319c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114f4576114f3611ae7565b5b0217905550858583600501918261150c9291906122e4565b5060005b84849050811015611588578260060185858381811061153257611531612552565b5b905060200281019061154491906131cb565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115799190613377565b50508080600101915050611510565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516115b891906119c6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061163661166f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116f35760008082815260200190815260200160002060030160009054906101000a900460ff166116e6576000808281526020019081526020016000206002015442116116e65760008082815260200190815260200160002060010154826116e391906124b2565b91505b8080600101915050611675565b5060008111611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e906133d1565b60405180910390fd5b6000814461174591906133f1565b9050600080600090505b6001548110156117dd5760008082815260200190815260200160002060030160009054906101000a900460ff166117d0576000808281526020019081526020016000206002015442116117d05760008082815260200190815260200160002060010154826117bd91906124b2565b9150828211156117cf578094506117dd565b5b808060010191505061174f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126118435761184261181e565b5b8235905067ffffffffffffffff8111156118605761185f611823565b5b60208301915083600182028301111561187c5761187b611828565b5b9250929050565b6000806020838503121561189a57611899611814565b5b600083013567ffffffffffffffff8111156118b8576118b7611819565b5b6118c48582860161182d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118fb826118d0565b9050919050565b61190b816118f0565b811461191657600080fd5b50565b60008135905061192881611902565b92915050565b6000819050919050565b6119418161192e565b811461194c57600080fd5b50565b60008135905061195e81611938565b92915050565b60008060006060848603121561197d5761197c611814565b5b600061198b86828701611919565b935050602061199c8682870161194f565b92505060406119ad8682870161194f565b9150509250925092565b6119c08161192e565b82525050565b60006020820190506119db60008301846119b7565b92915050565b60008083601f8401126119f7576119f661181e565b5b8235905067ffffffffffffffff811115611a1457611a13611823565b5b602083019150836001820283011115611a3057611a2f611828565b5b9250929050565b60008060008060608587031215611a5157611a50611814565b5b6000611a5f8782880161194f565b9450506020611a708782880161194f565b935050604085013567ffffffffffffffff811115611a9157611a90611819565b5b611a9d878288016119e1565b925092505092959194509250565b600060208284031215611ac157611ac0611814565b5b6000611acf8482850161194f565b91505092915050565b611ae1816118f0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b2757611b26611ae7565b5b50565b6000819050611b3882611b16565b919050565b6000611b4882611b2a565b9050919050565b611b5881611b3d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b98578082015181840152602081019050611b7d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc082611b5e565b611bca8185611b69565b9350611bda818560208601611b7a565b611be381611ba4565b840191505092915050565b60008115159050919050565b611c0381611bee565b82525050565b600060e082019050611c1e600083018a611ad8565b611c2b60208301896119b7565b611c386040830188611b4f565b611c4560608301876119b7565b8181036080830152611c578186611bb5565b905081810360a0830152611c6b8185611bb5565b9050611c7a60c0830184611bfa565b98975050505050505050565b611c8f81611bee565b8114611c9a57600080fd5b50565b600081359050611cac81611c86565b92915050565b60008060408385031215611cc957611cc8611814565b5b6000611cd78582860161194f565b9250506020611ce885828601611c9d565b9150509250929050565b600081905082602060030282011115611d0e57611d0d611828565b5b92915050565b60008060008060a08587031215611d2e57611d2d611814565b5b6000611d3c8782880161194f565b945050602085013567ffffffffffffffff811115611d5d57611d5c611819565b5b611d698782880161182d565b93509350506040611d7c87828801611cf2565b91505092959194509250565b60008060008060008060a08789031215611da557611da4611814565b5b6000611db389828a01611c9d565b9650506020611dc489828a01611c9d565b9550506040611dd589828a0161194f565b9450506060611de689828a0161194f565b935050608087013567ffffffffffffffff811115611e0757611e06611819565b5b611e1389828a016119e1565b92509250509295509295509295565b60008060408385031215611e3957611e38611814565b5b6000611e478582860161194f565b9250506020611e588582860161194f565b9150509250929050565b6000604082019050611e7760008301856119b7565b611e8460208301846119b7565b9392505050565b60008083601f840112611ea157611ea061181e565b5b8235905067ffffffffffffffff811115611ebe57611ebd611823565b5b602083019150836020820283011115611eda57611ed9611828565b5b9250929050565b600080600080600060608688031215611efd57611efc611814565b5b6000611f0b8882890161194f565b955050602086013567ffffffffffffffff811115611f2c57611f2b611819565b5b611f388882890161182d565b9450945050604086013567ffffffffffffffff811115611f5b57611f5a611819565b5b611f6788828901611e8b565b92509250509295509295909350565b6000608082019050611f8b6000830187611ad8565b611f9860208301866119b7565b611fa560408301856119b7565b611fb26060830184611bfa565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611ff1601083611b69565b9150611ffc82611fbb565b602082019050919050565b6000602082019050818103600083015261202081611fe4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120618261192e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361209357612092612027565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061211f57607f821691505b602082108103612132576121316120d8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261219a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261215d565b6121a4868361215d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121e16121dc6121d78461192e565b6121bc565b61192e565b9050919050565b6000819050919050565b6121fb836121c6565b61220f612207826121e8565b84845461216a565b825550505050565b600090565b612224612217565b61222f8184846121f2565b505050565b5b818110156122535761224860008261221c565b600181019050612235565b5050565b601f8211156122985761226981612138565b6122728461214d565b81016020851015612281578190505b61229561228d8561214d565b830182612234565b50505b505050565b600082821c905092915050565b60006122bb6000198460080261229d565b1980831691505092915050565b60006122d483836122aa565b9150826002028217905092915050565b6122ee838361209e565b67ffffffffffffffff811115612307576123066120a9565b5b6123118254612107565b61231c828285612257565b6000601f83116001811461234b5760008415612339578287013590505b61234385826122c8565b8655506123ab565b601f19841661235986612138565b60005b828110156123815784890135825560018201915060208501945060208101905061235c565b8683101561239e578489013561239a601f8916826122aa565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000612410603683611b69565b915061241b826123b4565b604082019050919050565b6000602082019050818103600083015261243f81612403565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061247c601183611b69565b915061248782612446565b602082019050919050565b600060208201905081810360008301526124ab8161246f565b9050919050565b60006124bd8261192e565b91506124c88361192e565b92508282019050808211156124e0576124df612027565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061251c602083611b69565b9150612527826124e6565b602082019050919050565b6000602082019050818103600083015261254b8161250f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125b68161192e565b82525050565b6125c5816118f0565b82525050565b6040820160008201516125e160008501826125ad565b5060208201516125f460208501826125bc565b50505050565b600061260683836125cb565b60408301905092915050565b6000602082019050919050565b600061262a82612581565b612634818561258c565b935061263f8361259d565b8060005b8381101561267057815161265788826125fa565b975061266283612612565b925050600181019050612643565b5085935050505092915050565b6000815461268a81612107565b6126948186611b69565b945060018216600081146126af57600181146126c5576126f8565b60ff1983168652811515602002860193506126f8565b6126ce85612138565b60005b838110156126f0578154818901526001820191506020810190506126d1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061275c61275783612732565b61273f565b9050919050565b6000819050919050565b61277681612763565b82525050565b600082825260208201905092915050565b6000815461279a81612107565b6127a4818661277c565b945060018216600081146127bf57600181146127d557612808565b60ff198316865281151560200286019350612808565b6127de85612138565b60005b83811015612800578154818901526001820191506020810190506127e1565b808801955050505b50505092915050565b600060408301600080840154905061282881612749565b612835600087018261276d565b5060018401858303602087015261284c838261278d565b925050819250505092915050565b60006128668383612811565b905092915050565b6000600282019050919050565b600061288682612701565b612890818561270c565b9350836020820285016128a28561271d565b8060005b858110156128dd578484038952816128be858261285a565b94506128c98361286e565b925060208a019950506001810190506128a6565b50829750879550505050505092915050565b60006060820190508181036000830152612909818661261f565b9050818103602083015261291d818561267d565b90508181036040830152612931818461287b565b9050949350505050565b600060408201905061295060008301856119b7565b61295d6020830184611bfa565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061299e8261192e565b91506129a98361192e565b9250826129b9576129b8612964565b5b828204905092915050565b60006129cf8261192e565b91506129da8361192e565b92508282039050818111156129f2576129f1612027565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a2483836125ad565b60208301905092915050565b6000602082019050919050565b612a46816129f8565b612a508184612a03565b9250612a5b82612a0e565b8060005b83811015612a8c578151612a738782612a18565b9650612a7e83612a30565b925050600181019050612a5f565b505050505050565b6000819050919050565b6000612ab9612ab4612aaf84612a94565b6121bc565b61192e565b9050919050565b612ac981612a9e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612af682612acf565b612b008185612ada565b9350612b10818560208601611b7a565b612b1981611ba4565b840191505092915050565b6000610140820190508181036000830152612b3f818b61267d565b9050612b4e602083018a6119b7565b612b5b6040830189612a3d565b612b686080830188612a3d565b612b7560c0830187612ac0565b612b8260e0830186611bfa565b612b90610100830185611bfa565b818103610120830152612ba38184612aeb565b90509998505050505050505050565b600081519050612bc181611938565b92915050565b600060208284031215612bdd57612bdc611814565b5b6000612beb84828501612bb2565b91505092915050565b6000608082019050612c0960008301876119b7565b612c166020830186611ad8565b612c2360408301856119b7565b612c306060830184611bfa565b95945050505050565b82818337600083830152505050565b6000612c548385611b69565b9350612c61838584612c39565b612c6a83611ba4565b840190509392505050565b82818337505050565b612c8a60608383612c75565b5050565b600060c0820190508181036000830152612ca9818789612c48565b9050612cb86020830186612c7e565b612cc56080830185611bfa565b81810360a0830152612cd78184612aeb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d3f603183611b69565b9150612d4a82612ce3565b604082019050919050565b60006020820190508181036000830152612d6e81612d32565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d9b82611b5e565b612da5818561277c565b9350612db5818560208601611b7a565b612dbe81611ba4565b840191505092915050565b6000604083016000830151612de1600086018261276d565b5060208301518482036020860152612df98282612d90565b9150508091505092915050565b6000612e128383612dc9565b905092915050565b6000602082019050919050565b6000612e3282612d75565b612e3c818561270c565b935083602082028501612e4e85612d80565b8060005b85811015612e8a5784840389528151612e6b8582612e06565b9450612e7683612e1a565b925060208a01995050600181019050612e52565b50829750879550505050505092915050565b60006060820190508181036000830152612eb6818661261f565b90508181036020830152612eca818561267d565b90508181036040830152612ede8184612e27565b9050949350505050565b50565b6000612ef8600083612ada565b9150612f0382612ee8565b600082019050919050565b6000610140820190508181036000830152612f29818a61267d565b9050612f3860208301896119b7565b612f456040830188612a3d565b612f526080830187612a3d565b612f5f60c0830186612ac0565b612f6c60e0830185611bfa565b612f7a610100830184611bfa565b818103610120830152612f8c81612eeb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612ff6603383611b69565b915061300182612f9a565b604082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613088602483611b69565b91506130938261302c565b604082019050919050565b600060208201905081810360008301526130b78161307b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130f4601883611b69565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613186603a83611b69565b91506131918261312a565b604082019050919050565b600060208201905081810360008301526131b581613179565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131e7576131e66131bc565b5b80830191505092915050565b6131fc81612763565b811461320757600080fd5b50565b60008135613217816131f3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61325984613220565b9350801983169250808416831791505092915050565b600061328a61328561328084612763565b6121bc565b612763565b9050919050565b6000819050919050565b6132a48261326f565b6132b76132b082613291565b835461322d565b8255505050565b600080833560016020038436030381126132db576132da6131bc565b5b80840192508235915067ffffffffffffffff8211156132fd576132fc6131c1565b5b602083019250600182023603831315613319576133186131c6565b5b509250929050565b61332c8383836122e4565b505050565b6000810160008301806133438161320a565b905061334f818461329b565b505050600181016020830161336481856132be565b61336f818386613321565b505050505050565b6133818282613331565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b60006133bb601a83611b69565b91506133c682613385565b602082019050919050565b600060208201905081810360008301526133ea816133ae565b9050919050565b60006133fc8261192e565b91506134078361192e565b92508261341757613416612964565b5b82820690509291505056fea26469706673582212207f4cb2aece81c4e0f14f3898d320d31a0a30f388e4626c7cc7da922dc69e5a6064736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b506040516200369e3803806200369e8339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b60805161343862000266600039600081816104c801528181610a3501528181610b0501528181610c2201528181610e330152818161104901526110db01526134386000f3fe6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611863565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b9190611944565b6104c6565b005b34801561013e57600080fd5b50610147610666565b60405161015491906119a6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a17565b61066c565b60405161019191906119a6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a8b565b6106eb565b6040516101d49796959493929190611be9565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c92565b610877565b005b610220600480360381019061021b9190611cf4565b610ce2565b005b34801561022e57600080fd5b50610237610e2b565b60405161024491906119a6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d68565b610e31565b005b34801561028257600080fd5b5061029d60048036038101906102989190611e02565b6111d3565b005b3480156102ab57600080fd5b506102b4611347565b6040516102c191906119a6565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611a8b565b61134d565b6040516102ff929190611e42565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611ec1565b611371565b005b34801561033d57600080fd5b5061035860048036038101906103539190611a8b565b6115a9565b6040516103689493929190611f56565b60405180910390f35b34801561037d57600080fd5b50610386611606565b60405161039391906119a6565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611fe7565b60405180910390fd5b6000600760008154809291906103f690612036565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061046761160c565b816003018190555083838260040191826104829291906122c4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611e42565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90612406565b60405180910390fd5b60008211610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e90612472565b60405180910390fd5b6000600160008154809291906105ac90612036565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106209190612492565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161065791906119a6565b60405180910390a15050505050565b60075481565b600080838381019061067e9190611a8b565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106d5929190611e42565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff1690806003015490806004018054610753906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461077f906120e7565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050908060050180546107e1906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906120e7565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108a2576108a1611ac7565b5b8160020160009054906101000a900460ff1660038111156108c6576108c5611ac7565b5b14610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612512565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561094857610947611ac7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561098657610985612089565b5b6040519080825280602002602001820160405280156109bf57816020015b6109ac6117c4565b8152602001906001900390816109a45790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2857610a27612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a96939291906128cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610af992919061291b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b509190612973565b8660010154610b5f91906129a4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610ba991906119a6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bdb989796959493929190612b04565b60206040518083038185885af1158015610bf9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c1e9190612ba7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610ca89493929190612bd4565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610cf790612036565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d7291906119a6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610da1959493929190612c6e565b60206040518083038185885af1158015610dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610de49190612ba7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e1b91906119a6565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612d35565b60405180910390fd5b60008282810190610ed09190611a8b565b90506000600660008381526020019081526020016000209050871580610ef4575086155b15610f7b578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f489190612973565b9081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5050506111cb565b60606000600167ffffffffffffffff811115610f9a57610f99612089565b5b604051908082528060200260200182016040528015610fd357816020015b610fc06117c4565b815260200190600190039081610fb85790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061103c5761103b612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110a793929190612e7c565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111269190612973565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016111829796959493929190612eee565b60206040518083038185885af11580156111a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111c59190612ba7565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612fec565b60405180910390fd5b8060030160009054906101000a900460ff16156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c49061307e565b60405180910390fd5b80600201544211156112f25781426112e59190612492565b816002018190555061130b565b8181600201546113029190612492565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161133a91906119a6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561139c5761139b611ac7565b5b8160020160009054906101000a900460ff1660038111156113c0576113bf611ac7565b5b14611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906130ea565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061317c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114d4576114d3611ac7565b5b021790555085858360050191826114ec9291906122c4565b5060005b84849050811015611568578260060185858381811061151257611511612532565b5b905060200281019061152491906131ab565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115599190613357565b505080806001019150506114f0565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161159891906119a6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061161661164f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116d35760008082815260200190815260200160002060030160009054906101000a900460ff166116c6576000808281526020019081526020016000206002015442116116c65760008082815260200190815260200160002060010154826116c39190612492565b91505b8080600101915050611655565b5060008111611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e906133b1565b60405180910390fd5b6000814461172591906133d1565b9050600080600090505b6001548110156117bd5760008082815260200190815260200160002060030160009054906101000a900460ff166117b0576000808281526020019081526020016000206002015442116117b057600080828152602001908152602001600020600101548261179d9190612492565b9150828211156117af578094506117bd565b5b808060010191505061172f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611823576118226117fe565b5b8235905067ffffffffffffffff8111156118405761183f611803565b5b60208301915083600182028301111561185c5761185b611808565b5b9250929050565b6000806020838503121561187a576118796117f4565b5b600083013567ffffffffffffffff811115611898576118976117f9565b5b6118a48582860161180d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118db826118b0565b9050919050565b6118eb816118d0565b81146118f657600080fd5b50565b600081359050611908816118e2565b92915050565b6000819050919050565b6119218161190e565b811461192c57600080fd5b50565b60008135905061193e81611918565b92915050565b60008060006060848603121561195d5761195c6117f4565b5b600061196b868287016118f9565b935050602061197c8682870161192f565b925050604061198d8682870161192f565b9150509250925092565b6119a08161190e565b82525050565b60006020820190506119bb6000830184611997565b92915050565b60008083601f8401126119d7576119d66117fe565b5b8235905067ffffffffffffffff8111156119f4576119f3611803565b5b602083019150836001820283011115611a1057611a0f611808565b5b9250929050565b60008060008060608587031215611a3157611a306117f4565b5b6000611a3f8782880161192f565b9450506020611a508782880161192f565b935050604085013567ffffffffffffffff811115611a7157611a706117f9565b5b611a7d878288016119c1565b925092505092959194509250565b600060208284031215611aa157611aa06117f4565b5b6000611aaf8482850161192f565b91505092915050565b611ac1816118d0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b0757611b06611ac7565b5b50565b6000819050611b1882611af6565b919050565b6000611b2882611b0a565b9050919050565b611b3881611b1d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b78578082015181840152602081019050611b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ba082611b3e565b611baa8185611b49565b9350611bba818560208601611b5a565b611bc381611b84565b840191505092915050565b60008115159050919050565b611be381611bce565b82525050565b600060e082019050611bfe600083018a611ab8565b611c0b6020830189611997565b611c186040830188611b2f565b611c256060830187611997565b8181036080830152611c378186611b95565b905081810360a0830152611c4b8185611b95565b9050611c5a60c0830184611bda565b98975050505050505050565b611c6f81611bce565b8114611c7a57600080fd5b50565b600081359050611c8c81611c66565b92915050565b60008060408385031215611ca957611ca86117f4565b5b6000611cb78582860161192f565b9250506020611cc885828601611c7d565b9150509250929050565b600081905082602060030282011115611cee57611ced611808565b5b92915050565b60008060008060a08587031215611d0e57611d0d6117f4565b5b6000611d1c8782880161192f565b945050602085013567ffffffffffffffff811115611d3d57611d3c6117f9565b5b611d498782880161180d565b93509350506040611d5c87828801611cd2565b91505092959194509250565b60008060008060008060a08789031215611d8557611d846117f4565b5b6000611d9389828a01611c7d565b9650506020611da489828a01611c7d565b9550506040611db589828a0161192f565b9450506060611dc689828a0161192f565b935050608087013567ffffffffffffffff811115611de757611de66117f9565b5b611df389828a016119c1565b92509250509295509295509295565b60008060408385031215611e1957611e186117f4565b5b6000611e278582860161192f565b9250506020611e388582860161192f565b9150509250929050565b6000604082019050611e576000830185611997565b611e646020830184611997565b9392505050565b60008083601f840112611e8157611e806117fe565b5b8235905067ffffffffffffffff811115611e9e57611e9d611803565b5b602083019150836020820283011115611eba57611eb9611808565b5b9250929050565b600080600080600060608688031215611edd57611edc6117f4565b5b6000611eeb8882890161192f565b955050602086013567ffffffffffffffff811115611f0c57611f0b6117f9565b5b611f188882890161180d565b9450945050604086013567ffffffffffffffff811115611f3b57611f3a6117f9565b5b611f4788828901611e6b565b92509250509295509295909350565b6000608082019050611f6b6000830187611ab8565b611f786020830186611997565b611f856040830185611997565b611f926060830184611bda565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611fd1601083611b49565b9150611fdc82611f9b565b602082019050919050565b6000602082019050818103600083015261200081611fc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120418261190e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361207357612072612007565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120ff57607f821691505b602082108103612112576121116120b8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261213d565b612184868361213d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121c16121bc6121b78461190e565b61219c565b61190e565b9050919050565b6000819050919050565b6121db836121a6565b6121ef6121e7826121c8565b84845461214a565b825550505050565b600090565b6122046121f7565b61220f8184846121d2565b505050565b5b81811015612233576122286000826121fc565b600181019050612215565b5050565b601f8211156122785761224981612118565b6122528461212d565b81016020851015612261578190505b61227561226d8561212d565b830182612214565b50505b505050565b600082821c905092915050565b600061229b6000198460080261227d565b1980831691505092915050565b60006122b4838361228a565b9150826002028217905092915050565b6122ce838361207e565b67ffffffffffffffff8111156122e7576122e6612089565b5b6122f182546120e7565b6122fc828285612237565b6000601f83116001811461232b5760008415612319578287013590505b61232385826122a8565b86555061238b565b601f19841661233986612118565b60005b828110156123615784890135825560018201915060208501945060208101905061233c565b8683101561237e578489013561237a601f89168261228a565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006123f0603683611b49565b91506123fb82612394565b604082019050919050565b6000602082019050818103600083015261241f816123e3565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061245c601183611b49565b915061246782612426565b602082019050919050565b6000602082019050818103600083015261248b8161244f565b9050919050565b600061249d8261190e565b91506124a88361190e565b92508282019050808211156124c0576124bf612007565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006124fc602083611b49565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125968161190e565b82525050565b6125a5816118d0565b82525050565b6040820160008201516125c1600085018261258d565b5060208201516125d4602085018261259c565b50505050565b60006125e683836125ab565b60408301905092915050565b6000602082019050919050565b600061260a82612561565b612614818561256c565b935061261f8361257d565b8060005b8381101561265057815161263788826125da565b9750612642836125f2565b925050600181019050612623565b5085935050505092915050565b6000815461266a816120e7565b6126748186611b49565b9450600182166000811461268f57600181146126a5576126d8565b60ff1983168652811515602002860193506126d8565b6126ae85612118565b60005b838110156126d0578154818901526001820191506020810190506126b1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061273c61273783612712565b61271f565b9050919050565b6000819050919050565b61275681612743565b82525050565b600082825260208201905092915050565b6000815461277a816120e7565b612784818661275c565b9450600182166000811461279f57600181146127b5576127e8565b60ff1983168652811515602002860193506127e8565b6127be85612118565b60005b838110156127e0578154818901526001820191506020810190506127c1565b808801955050505b50505092915050565b600060408301600080840154905061280881612729565b612815600087018261274d565b5060018401858303602087015261282c838261276d565b925050819250505092915050565b600061284683836127f1565b905092915050565b6000600282019050919050565b6000612866826126e1565b61287081856126ec565b935083602082028501612882856126fd565b8060005b858110156128bd5784840389528161289e858261283a565b94506128a98361284e565b925060208a01995050600181019050612886565b50829750879550505050505092915050565b600060608201905081810360008301526128e981866125ff565b905081810360208301526128fd818561265d565b90508181036040830152612911818461285b565b9050949350505050565b60006040820190506129306000830185611997565b61293d6020830184611bda565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297e8261190e565b91506129898361190e565b92508261299957612998612944565b5b828204905092915050565b60006129af8261190e565b91506129ba8361190e565b92508282039050818111156129d2576129d1612007565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a04838361258d565b60208301905092915050565b6000602082019050919050565b612a26816129d8565b612a3081846129e3565b9250612a3b826129ee565b8060005b83811015612a6c578151612a5387826129f8565b9650612a5e83612a10565b925050600181019050612a3f565b505050505050565b6000819050919050565b6000612a99612a94612a8f84612a74565b61219c565b61190e565b9050919050565b612aa981612a7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612ad682612aaf565b612ae08185612aba565b9350612af0818560208601611b5a565b612af981611b84565b840191505092915050565b6000610140820190508181036000830152612b1f818b61265d565b9050612b2e602083018a611997565b612b3b6040830189612a1d565b612b486080830188612a1d565b612b5560c0830187612aa0565b612b6260e0830186611bda565b612b70610100830185611bda565b818103610120830152612b838184612acb565b90509998505050505050505050565b600081519050612ba181611918565b92915050565b600060208284031215612bbd57612bbc6117f4565b5b6000612bcb84828501612b92565b91505092915050565b6000608082019050612be96000830187611997565b612bf66020830186611ab8565b612c036040830185611997565b612c106060830184611bda565b95945050505050565b82818337600083830152505050565b6000612c348385611b49565b9350612c41838584612c19565b612c4a83611b84565b840190509392505050565b82818337505050565b612c6a60608383612c55565b5050565b600060c0820190508181036000830152612c89818789612c28565b9050612c986020830186612c5e565b612ca56080830185611bda565b81810360a0830152612cb78184612acb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d1f603183611b49565b9150612d2a82612cc3565b604082019050919050565b60006020820190508181036000830152612d4e81612d12565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d7b82611b3e565b612d85818561275c565b9350612d95818560208601611b5a565b612d9e81611b84565b840191505092915050565b6000604083016000830151612dc1600086018261274d565b5060208301518482036020860152612dd98282612d70565b9150508091505092915050565b6000612df28383612da9565b905092915050565b6000602082019050919050565b6000612e1282612d55565b612e1c81856126ec565b935083602082028501612e2e85612d60565b8060005b85811015612e6a5784840389528151612e4b8582612de6565b9450612e5683612dfa565b925060208a01995050600181019050612e32565b50829750879550505050505092915050565b60006060820190508181036000830152612e9681866125ff565b90508181036020830152612eaa818561265d565b90508181036040830152612ebe8184612e07565b9050949350505050565b50565b6000612ed8600083612aba565b9150612ee382612ec8565b600082019050919050565b6000610140820190508181036000830152612f09818a61265d565b9050612f186020830189611997565b612f256040830188612a1d565b612f326080830187612a1d565b612f3f60c0830186612aa0565b612f4c60e0830185611bda565b612f5a610100830184611bda565b818103610120830152612f6c81612ecb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612fd6603383611b49565b9150612fe182612f7a565b604082019050919050565b6000602082019050818103600083015261300581612fc9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613068602483611b49565b91506130738261300c565b604082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130d4601883611b49565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613166603a83611b49565b91506131718261310a565b604082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131c7576131c661319c565b5b80830191505092915050565b6131dc81612743565b81146131e757600080fd5b50565b600081356131f7816131d3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61323984613200565b9350801983169250808416831791505092915050565b600061326a61326561326084612743565b61219c565b612743565b9050919050565b6000819050919050565b6132848261324f565b61329761329082613271565b835461320d565b8255505050565b600080833560016020038436030381126132bb576132ba61319c565b5b80840192508235915067ffffffffffffffff8211156132dd576132dc6131a1565b5b6020830192506001820236038313156132f9576132f86131a6565b5b509250929050565b61330c8383836122c4565b505050565b600081016000830180613323816131ea565b905061332f818461327b565b5050506001810160208301613344818561329e565b61334f818386613301565b505050505050565b6133618282613311565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b600061339b601a83611b49565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b60006133dc8261190e565b91506133e78361190e565b9250826133f7576133f6612944565b5b82820690509291505056fea26469706673582212206df67e317ebf3a0b98bea25a97e27222346d7b610a157599ac8e6f50387f2fc364736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100e85760003560e01c8063a035b1fe1161008a578063cf37625611610059578063cf376256146102ca578063d0fae95f14610308578063d5a44f8614610331578063d76b679414610371576100e8565b8063a035b1fe14610222578063b4e6a1d51461024d578063b5b20c0014610276578063c4a9e1161461029f576100e8565b8063815a0572116100c6578063815a05721461015d57806381d12c581461019a578063854b6a4f146101dd57806399ad6c5614610206576100e8565b80630d0271d6146100ed578063216ed6ad146101095780635badbe4c14610132575b600080fd5b61010760048036038101906101029190611863565b61039c565b005b34801561011557600080fd5b50610130600480360381019061012b9190611944565b6104c6565b005b34801561013e57600080fd5b50610147610666565b60405161015491906119a6565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f9190611a17565b61066c565b60405161019191906119a6565b60405180910390f35b3480156101a657600080fd5b506101c160048036038101906101bc9190611a8b565b6106eb565b6040516101d49796959493929190611be9565b60405180910390f35b3480156101e957600080fd5b5061020460048036038101906101ff9190611c92565b610877565b005b610220600480360381019061021b9190611cf4565b610ce2565b005b34801561022e57600080fd5b50610237610e2b565b60405161024491906119a6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190611d68565b610e31565b005b34801561028257600080fd5b5061029d60048036038101906102989190611e02565b6111d3565b005b3480156102ab57600080fd5b506102b4611347565b6040516102c191906119a6565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190611a8b565b61134d565b6040516102ff929190611e42565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190611ec1565b611371565b005b34801561033d57600080fd5b5061035860048036038101906103539190611a8b565b6115a9565b6040516103689493929190611f56565b60405180910390f35b34801561037d57600080fd5b50610386611606565b60405161039391906119a6565b60405180910390f35b6003543410156103e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d890611fe7565b60405180910390fd5b6000600760008154809291906103f690612036565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034816001018190555061046761160c565b816003018190555083838260040191826104829291906122c4565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b48282600301546040516104b8929190611e42565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90612406565b60405180910390fd5b60008211610597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058e90612472565b60405180910390fd5b6000600160008154809291906105ac90612036565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426106209190612492565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98260405161065791906119a6565b60405180910390a15050505050565b60075481565b600080838381019061067e9190611a8b565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106d5929190611e42565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff1690806003015490806004018054610753906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461077f906120e7565b80156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b5050505050908060050180546107e1906120e7565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906120e7565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b6000600660008481526020019081526020016000209050600160038111156108a2576108a1611ac7565b5b8160020160009054906101000a900460ff1660038111156108c6576108c5611ac7565b5b14610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90612512565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff0219169083600381111561094857610947611ac7565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561098657610985612089565b5b6040519080825280602002602001820160405280156109bf57816020015b6109ac6117c4565b8152602001906001900390816109a45790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2857610a27612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a96939291906128cf565b600060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610af992919061291b565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a8660010154610b509190612973565b8660010154610b5f91906129a4565b8660050160146040518060400160405280600181526020016003815250604051806040016040528060018152602001600281525060646001808f604051602001610ba991906119a6565b6040516020818303038152906040526040518a63ffffffff1660e01b8152600401610bdb989796959493929190612b04565b60206040518083038185885af1158015610bf9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c1e9190612ba7565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610ca89493929190612bd4565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610cf790612036565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d7291906119a6565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610da1959493929190612c6e565b60206040518083038185885af1158015610dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610de49190612ba7565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610e1b91906119a6565b60405180910390a1505050505050565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690612d35565b60405180910390fd5b60008282810190610ed09190611a8b565b90506000600660008381526020019081526020016000209050871580610ef4575086155b15610f7b578060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600a8360010154610f489190612973565b9081150290604051600060405180830381858888f19350505050158015610f73573d6000803e3d6000fd5b5050506111cb565b60606000600167ffffffffffffffff811115610f9a57610f99612089565b5b604051908082528060200260200182016040528015610fd357816020015b610fc06117c4565b815260200190600190039081610fb85790505b5090506040518060400160405280620f424081526020018460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508160008151811061103c5761103b612532565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600401856040518463ffffffff1660e01b81526004016110a793929190612e7c565b600060405180830381600087803b1580156110c157600080fd5b505af11580156110d5573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73600a85600101546111269190612973565b856004016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b81526004016111829796959493929190612eee565b60206040518083038185885af11580156111a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111c59190612ba7565b50505050505b505050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612fec565b60405180910390fd5b8060030160009054906101000a900460ff16156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c49061307e565b60405180910390fd5b80600201544211156112f25781426112e59190612492565b816002018190555061130b565b8181600201546113029190612492565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e98360405161133a91906119a6565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b60006006600087815260200190815260200160002090506000600381111561139c5761139b611ac7565b5b8160020160009054906101000a900460ff1660038111156113c0576113bf611ac7565b5b14611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f7906130ea565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061317c565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156114d4576114d3611ac7565b5b021790555085858360050191826114ec9291906122c4565b5060005b84849050811015611568578260060185858381811061151257611511612532565b5b905060200281019061152491906131ab565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816115599190613357565b505080806001019150506114f0565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161159891906119a6565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061161661164f565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156116d35760008082815260200190815260200160002060030160009054906101000a900460ff166116c6576000808281526020019081526020016000206002015442116116c65760008082815260200190815260200160002060010154826116c39190612492565b91505b8080600101915050611655565b5060008111611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e906133b1565b60405180910390fd5b6000814461172591906133d1565b9050600080600090505b6001548110156117bd5760008082815260200190815260200160002060030160009054906101000a900460ff166117b0576000808281526020019081526020016000206002015442116117b057600080828152602001908152602001600020600101548261179d9190612492565b9150828211156117af578094506117bd565b5b808060010191505061172f565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611823576118226117fe565b5b8235905067ffffffffffffffff8111156118405761183f611803565b5b60208301915083600182028301111561185c5761185b611808565b5b9250929050565b6000806020838503121561187a576118796117f4565b5b600083013567ffffffffffffffff811115611898576118976117f9565b5b6118a48582860161180d565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118db826118b0565b9050919050565b6118eb816118d0565b81146118f657600080fd5b50565b600081359050611908816118e2565b92915050565b6000819050919050565b6119218161190e565b811461192c57600080fd5b50565b60008135905061193e81611918565b92915050565b60008060006060848603121561195d5761195c6117f4565b5b600061196b868287016118f9565b935050602061197c8682870161192f565b925050604061198d8682870161192f565b9150509250925092565b6119a08161190e565b82525050565b60006020820190506119bb6000830184611997565b92915050565b60008083601f8401126119d7576119d66117fe565b5b8235905067ffffffffffffffff8111156119f4576119f3611803565b5b602083019150836001820283011115611a1057611a0f611808565b5b9250929050565b60008060008060608587031215611a3157611a306117f4565b5b6000611a3f8782880161192f565b9450506020611a508782880161192f565b935050604085013567ffffffffffffffff811115611a7157611a706117f9565b5b611a7d878288016119c1565b925092505092959194509250565b600060208284031215611aa157611aa06117f4565b5b6000611aaf8482850161192f565b91505092915050565b611ac1816118d0565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b0757611b06611ac7565b5b50565b6000819050611b1882611af6565b919050565b6000611b2882611b0a565b9050919050565b611b3881611b1d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b78578082015181840152602081019050611b5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ba082611b3e565b611baa8185611b49565b9350611bba818560208601611b5a565b611bc381611b84565b840191505092915050565b60008115159050919050565b611be381611bce565b82525050565b600060e082019050611bfe600083018a611ab8565b611c0b6020830189611997565b611c186040830188611b2f565b611c256060830187611997565b8181036080830152611c378186611b95565b905081810360a0830152611c4b8185611b95565b9050611c5a60c0830184611bda565b98975050505050505050565b611c6f81611bce565b8114611c7a57600080fd5b50565b600081359050611c8c81611c66565b92915050565b60008060408385031215611ca957611ca86117f4565b5b6000611cb78582860161192f565b9250506020611cc885828601611c7d565b9150509250929050565b600081905082602060030282011115611cee57611ced611808565b5b92915050565b60008060008060a08587031215611d0e57611d0d6117f4565b5b6000611d1c8782880161192f565b945050602085013567ffffffffffffffff811115611d3d57611d3c6117f9565b5b611d498782880161180d565b93509350506040611d5c87828801611cd2565b91505092959194509250565b60008060008060008060a08789031215611d8557611d846117f4565b5b6000611d9389828a01611c7d565b9650506020611da489828a01611c7d565b9550506040611db589828a0161192f565b9450506060611dc689828a0161192f565b935050608087013567ffffffffffffffff811115611de757611de66117f9565b5b611df389828a016119c1565b92509250509295509295509295565b60008060408385031215611e1957611e186117f4565b5b6000611e278582860161192f565b9250506020611e388582860161192f565b9150509250929050565b6000604082019050611e576000830185611997565b611e646020830184611997565b9392505050565b60008083601f840112611e8157611e806117fe565b5b8235905067ffffffffffffffff811115611e9e57611e9d611803565b5b602083019150836020820283011115611eba57611eb9611808565b5b9250929050565b600080600080600060608688031215611edd57611edc6117f4565b5b6000611eeb8882890161192f565b955050602086013567ffffffffffffffff811115611f0c57611f0b6117f9565b5b611f188882890161180d565b9450945050604086013567ffffffffffffffff811115611f3b57611f3a6117f9565b5b611f4788828901611e6b565b92509250509295509295909350565b6000608082019050611f6b6000830187611ab8565b611f786020830186611997565b611f856040830185611997565b611f926060830184611bda565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611fd1601083611b49565b9150611fdc82611f9b565b602082019050919050565b6000602082019050818103600083015261200081611fc4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006120418261190e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361207357612072612007565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120ff57607f821691505b602082108103612112576121116120b8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261217a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261213d565b612184868361213d565b95508019841693508086168417925050509392505050565b6000819050919050565b60006121c16121bc6121b78461190e565b61219c565b61190e565b9050919050565b6000819050919050565b6121db836121a6565b6121ef6121e7826121c8565b84845461214a565b825550505050565b600090565b6122046121f7565b61220f8184846121d2565b505050565b5b81811015612233576122286000826121fc565b600181019050612215565b5050565b601f8211156122785761224981612118565b6122528461212d565b81016020851015612261578190505b61227561226d8561212d565b830182612214565b50505b505050565b600082821c905092915050565b600061229b6000198460080261227d565b1980831691505092915050565b60006122b4838361228a565b9150826002028217905092915050565b6122ce838361207e565b67ffffffffffffffff8111156122e7576122e6612089565b5b6122f182546120e7565b6122fc828285612237565b6000601f83116001811461232b5760008415612319578287013590505b61232385826122a8565b86555061238b565b601f19841661233986612118565b60005b828110156123615784890135825560018201915060208501945060208101905061233c565b8683101561237e578489013561237a601f89168261228a565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006123f0603683611b49565b91506123fb82612394565b604082019050919050565b6000602082019050818103600083015261241f816123e3565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061245c601183611b49565b915061246782612426565b602082019050919050565b6000602082019050818103600083015261248b8161244f565b9050919050565b600061249d8261190e565b91506124a88361190e565b92508282019050808211156124c0576124bf612007565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b60006124fc602083611b49565b9150612507826124c6565b602082019050919050565b6000602082019050818103600083015261252b816124ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6125968161190e565b82525050565b6125a5816118d0565b82525050565b6040820160008201516125c1600085018261258d565b5060208201516125d4602085018261259c565b50505050565b60006125e683836125ab565b60408301905092915050565b6000602082019050919050565b600061260a82612561565b612614818561256c565b935061261f8361257d565b8060005b8381101561265057815161263788826125da565b9750612642836125f2565b925050600181019050612623565b5085935050505092915050565b6000815461266a816120e7565b6126748186611b49565b9450600182166000811461268f57600181146126a5576126d8565b60ff1983168652811515602002860193506126d8565b6126ae85612118565b60005b838110156126d0578154818901526001820191506020810190506126b1565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061273c61273783612712565b61271f565b9050919050565b6000819050919050565b61275681612743565b82525050565b600082825260208201905092915050565b6000815461277a816120e7565b612784818661275c565b9450600182166000811461279f57600181146127b5576127e8565b60ff1983168652811515602002860193506127e8565b6127be85612118565b60005b838110156127e0578154818901526001820191506020810190506127c1565b808801955050505b50505092915050565b600060408301600080840154905061280881612729565b612815600087018261274d565b5060018401858303602087015261282c838261276d565b925050819250505092915050565b600061284683836127f1565b905092915050565b6000600282019050919050565b6000612866826126e1565b61287081856126ec565b935083602082028501612882856126fd565b8060005b858110156128bd5784840389528161289e858261283a565b94506128a98361284e565b925060208a01995050600181019050612886565b50829750879550505050505092915050565b600060608201905081810360008301526128e981866125ff565b905081810360208301526128fd818561265d565b90508181036040830152612911818461285b565b9050949350505050565b60006040820190506129306000830185611997565b61293d6020830184611bda565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061297e8261190e565b91506129898361190e565b92508261299957612998612944565b5b828204905092915050565b60006129af8261190e565b91506129ba8361190e565b92508282039050818111156129d2576129d1612007565b5b92915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612a04838361258d565b60208301905092915050565b6000602082019050919050565b612a26816129d8565b612a3081846129e3565b9250612a3b826129ee565b8060005b83811015612a6c578151612a5387826129f8565b9650612a5e83612a10565b925050600181019050612a3f565b505050505050565b6000819050919050565b6000612a99612a94612a8f84612a74565b61219c565b61190e565b9050919050565b612aa981612a7e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000612ad682612aaf565b612ae08185612aba565b9350612af0818560208601611b5a565b612af981611b84565b840191505092915050565b6000610140820190508181036000830152612b1f818b61265d565b9050612b2e602083018a611997565b612b3b6040830189612a1d565b612b486080830188612a1d565b612b5560c0830187612aa0565b612b6260e0830186611bda565b612b70610100830185611bda565b818103610120830152612b838184612acb565b90509998505050505050505050565b600081519050612ba181611918565b92915050565b600060208284031215612bbd57612bbc6117f4565b5b6000612bcb84828501612b92565b91505092915050565b6000608082019050612be96000830187611997565b612bf66020830186611ab8565b612c036040830185611997565b612c106060830184611bda565b95945050505050565b82818337600083830152505050565b6000612c348385611b49565b9350612c41838584612c19565b612c4a83611b84565b840190509392505050565b82818337505050565b612c6a60608383612c55565b5050565b600060c0820190508181036000830152612c89818789612c28565b9050612c986020830186612c5e565b612ca56080830185611bda565b81810360a0830152612cb78184612acb565b90509695505050505050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b6000612d1f603183611b49565b9150612d2a82612cc3565b604082019050919050565b60006020820190508181036000830152612d4e81612d12565b9050919050565b600081519050919050565b6000819050602082019050919050565b6000612d7b82611b3e565b612d85818561275c565b9350612d95818560208601611b5a565b612d9e81611b84565b840191505092915050565b6000604083016000830151612dc1600086018261274d565b5060208301518482036020860152612dd98282612d70565b9150508091505092915050565b6000612df28383612da9565b905092915050565b6000602082019050919050565b6000612e1282612d55565b612e1c81856126ec565b935083602082028501612e2e85612d60565b8060005b85811015612e6a5784840389528151612e4b8582612de6565b9450612e5683612dfa565b925060208a01995050600181019050612e32565b50829750879550505050505092915050565b60006060820190508181036000830152612e9681866125ff565b90508181036020830152612eaa818561265d565b90508181036040830152612ebe8184612e07565b9050949350505050565b50565b6000612ed8600083612aba565b9150612ee382612ec8565b600082019050919050565b6000610140820190508181036000830152612f09818a61265d565b9050612f186020830189611997565b612f256040830188612a1d565b612f326080830187612a1d565b612f3f60c0830186612aa0565b612f4c60e0830185611bda565b612f5a610100830184611bda565b818103610120830152612f6c81612ecb565b905098975050505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612fd6603383611b49565b9150612fe182612f7a565b604082019050919050565b6000602082019050818103600083015261300581612fc9565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000613068602483611b49565b91506130738261300c565b604082019050919050565b600060208201905081810360008301526130978161305b565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006130d4601883611b49565b91506130df8261309e565b602082019050919050565b60006020820190508181036000830152613103816130c7565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000613166603a83611b49565b91506131718261310a565b604082019050919050565b6000602082019050818103600083015261319581613159565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126131c7576131c661319c565b5b80830191505092915050565b6131dc81612743565b81146131e757600080fd5b50565b600081356131f7816131d3565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61323984613200565b9350801983169250808416831791505092915050565b600061326a61326561326084612743565b61219c565b612743565b9050919050565b6000819050919050565b6132848261324f565b61329761329082613271565b835461320d565b8255505050565b600080833560016020038436030381126132bb576132ba61319c565b5b80840192508235915067ffffffffffffffff8211156132dd576132dc6131a1565b5b6020830192506001820236038313156132f9576132f86131a6565b5b509250929050565b61330c8383836122c4565b505050565b600081016000830180613323816131ea565b905061332f818461327b565b5050506001810160208301613344818561329e565b61334f818386613301565b505050505050565b6133618282613311565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b600061339b601a83611b49565b91506133a682613365565b602082019050919050565b600060208201905081810360008301526133ca8161338e565b9050919050565b60006133dc8261190e565b91506133e78361190e565b9250826133f7576133f6612944565b5b82820690509291505056fea26469706673582212206df67e317ebf3a0b98bea25a97e27222346d7b610a157599ac8e6f50387f2fc364736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Proposals.json b/frontend/contractArtifacts/Proposals.json index 57cb228..2941653 100644 --- a/frontend/contractArtifacts/Proposals.json +++ b/frontend/contractArtifacts/Proposals.json @@ -213,13 +213,7 @@ } ], "name": "onValidate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], + "outputs": [], "stateMutability": "nonpayable", "type": "function" }, @@ -343,8 +337,8 @@ "type": "function" } ], - "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b5060405162003544380380620035448339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b60805161308c620004b8600039600081816106fd015281816108e901528181610ae3015281816115490152611717015261308c6000f3fe60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610168578063cac152a414610191578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119f9565b610229565b6040516100bc99989796959493929190611bed565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119f9565b6103c1565b6040516100f99190611e6d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e89565b6106fa565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f5a565b6108e5565b60405161015f9190611ff4565b60405180910390f35b34801561017457600080fd5b5061018f600480360381019061018a91906119f9565b6111ba565b005b6101ab60048036038101906101a69190612087565b6112e6565b6040516101b89190611ff4565b60405180910390f35b3480156101cd57600080fd5b506101d66114b0565b6040516101e39190611ff4565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e91906119f9565b6114b6565b604051610220919061212e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612178565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612178565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612178565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b6103c961191a565b60008060008481526020019081526020016000209050806008016000600381106103f6576103f56121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156104c6578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610414565b50505050826000600381106104de576104dd6121a9565b5b6020020181905250806008016001600381106104fd576104fc6121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156105cd578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061051b565b50505050826001600381106105e5576105e46121a9565b5b602002018190525080600801600260038110610604576106036121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156106d4578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610622565b50505050826002600381106106ec576106eb6121a9565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161075491906121d8565b602060405180830381865afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107959190612208565b10156107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906122a7565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461084191906122f6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818160070160008282546108a2919061232a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108d89190611ff4565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906123d0565b60405180910390fd5b6000806000858581019061098991906123f0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109bd576109bc6121a9565b5b6011020190506000816001018260100154600381106109df576109de6121a9565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610adf5760048360050160006101000a81548160ff02191690836005811115610a7957610a78611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610aad919061248f565b60405180910390a183836002016000828254610ac9919061232a565b92505081905550600196505050505050506111b0565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612208565b8b8d610b7c919061232a565b6002610b8891906124bd565b1015905060016005811115610ba057610b9f611b06565b5b8460050160009054906101000a900460ff166005811115610bc457610bc3611b06565b5b03610ce55760008614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c039061254b565b60405180910390fd5b8d8015610c165750805b15610c4d5760028460050160006101000a81548160ff02191690836005811115610c4357610c42611b06565b5b0217905550610ce0565b6002836010015410610cc25760048460050160006101000a81548160ff02191690836005811115610c8157610c80611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610cb591906125b7565b60405180910390a1610cdf565b6001836010016000828254610cd7919061232a565b925050819055505b5b61108c565b60026005811115610cf957610cf8611b06565b5b8460050160009054906101000a900460ff166005811115610d1d57610d1c611b06565b5b03610e3e5760018614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612631565b60405180910390fd5b8d8015610d6f5750805b15610da65760038460050160006101000a81548160ff02191690836005811115610d9c57610d9b611b06565b5b0217905550610e39565b6002836010015410610e1b5760048460050160006101000a81548160ff02191690836005811115610dda57610dd9611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610e0e91906125b7565b60405180910390a1610e38565b6001836010016000828254610e30919061232a565b925050819055505b5b61108b565b60036005811115610e5257610e51611b06565b5b8460050160009054906101000a900460ff166005811115610e7657610e75611b06565b5b0361108a5760028614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061269d565b60405180910390fd5b8d8015610ec85750805b15610ff65760058460050160006101000a81548160ff02191690836005811115610ef557610ef4611b06565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f299190611ff4565b60405180910390a183603b0160009054906101000a900460ff1615610ff1578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b8152600401610fac93929190612756565b6020604051808303816000875af1158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190612208565b505b611089565b600283601001541061106b5760048460050160006101000a81548160ff0219169083600581111561102a57611029611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8760405161105e91906125b7565b60405180910390a1611088565b6001836010016000828254611080919061232a565b925050819055505b5b5b5b5b600160058111156110a05761109f611b06565b5b8460050160009054906101000a900460ff1660058111156110c4576110c3611b06565b5b036110ea576110e5876000600a87600101546110e091906127c3565b6116e2565b6111a4565b600260058111156110fe576110fd611b06565b5b8460050160009054906101000a900460ff16600581111561112257611121611b06565b5b0361114857611143876001600a876001015461113e91906127c3565b6116e2565b6111a3565b6003600581111561115c5761115b611b06565b5b8460050160009054906101000a900460ff1660058111156111805761117f611b06565b5b036111a2576111a1876002600a876001015461119c91906127c3565b6116e2565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156111e4576111e3611b06565b5b8160050160009054906101000a900460ff16600581111561120857611207611b06565b5b1480611248575060058081111561122257611221611b06565b5b8160050160009054906101000a900460ff16600581111561124657611245611b06565b5b145b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e9061288c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112e0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112fb906128ac565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261136d929190612ada565b504281600401819055508560006003811061138b5761138a6121a9565b5b6020020135816008016000600381106113a7576113a66121a9565b5b6011020160000181905550856001600381106113c6576113c56121a9565b5b6020020135816008016001600381106113e2576113e16121a9565b5b601102016000018190555085600260038110611401576114006121a9565b5b60200201358160080160026003811061141d5761141c6121a9565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261146d929190612bfb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161149d9190611ff4565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114e1576114e0611b06565b5b8160050160009054906101000a900460ff16600581111561150557611504611b06565b5b14611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612d3d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190612208565b8260070154600a6115e791906124bd565b1015905060006301e133808360040154611601919061232a565b421190508161168c5780156116805760048360050160006101000a81548160ff0219169083600581111561163857611637611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161166c9190612dcf565b60405180910390a1600093505050506116dd565b600093505050506116dd565b60018360050160006101000a81548160ff021916908360058111156116b4576116b3611b06565b5b02179055506116d5856000600a86600101546116d091906127c3565b6116e2565b600193505050505b919050565b600080600085815260200190815260200160002090508181600201600082825461170c91906122f6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061176c5761176b6121a9565b5b601102016000015460068960038110611788576117876121a9565b5b60020201600c8a600381106117a05761179f6121a9565b5b6002020160028b600381106117b8576117b76121a9565b5b015460058c600381106117ce576117cd6121a9565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117fb93929190612dfd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161182d989796959493929190612f9f565b60206040518083038185885af115801561184b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118709190612208565b9050600082600801856003811061188a576118896121a9565b5b6011020190506000816001018260100154600381106118ac576118ab6121a9565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c673479878460405161190992919061302d565b60405180910390a150505050505050565b60405180606001604052806003905b611931611947565b8152602001906001900390816119295790505090565b60405180606001604052806003905b61195e611974565b8152602001906001900390816119565790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119d6816119c3565b81146119e157600080fd5b50565b6000813590506119f3816119cd565b92915050565b600060208284031215611a0f57611a0e6119b9565b5b6000611a1d848285016119e4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a5182611a26565b9050919050565b611a6181611a46565b82525050565b611a70816119c3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ab0578082015181840152602081019050611a95565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ad882611a76565b611ae28185611a81565b9350611af2818560208601611a92565b611afb81611abc565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b4657611b45611b06565b5b50565b6000819050611b5782611b35565b919050565b6000611b6782611b49565b9050919050565b611b7781611b5c565b82525050565b60008115159050919050565b611b9281611b7d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611bbf82611b98565b611bc98185611ba3565b9350611bd9818560208601611a92565b611be281611abc565b840191505092915050565b600061012082019050611c03600083018c611a58565b611c10602083018b611a67565b611c1d604083018a611a67565b8181036060830152611c2f8189611acd565b9050611c3e6080830188611a67565b611c4b60a0830187611b6e565b611c5860c0830186611a67565b611c6560e0830185611b89565b818103610100830152611c788184611bb4565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cd1816119c3565b82525050565b611ce081611b7d565b82525050565b60e082016000820151611cfc6000850182611cc8565b506020820151611d0f6020850182611cd7565b506040820151611d226040850182611cd7565b506060820151611d356060850182611cc8565b506080820151611d486080850182611cc8565b5060a0820151611d5b60a0850182611cd7565b5060c0820151611d6e60c0850182611cd7565b50505050565b6000611d808383611ce6565b60e08301905092915050565b6000602082019050919050565b611da281611ca8565b611dac8184611cb3565b9250611db782611cbe565b8060005b83811015611de8578151611dcf8782611d74565b9650611dda83611d8c565b925050600181019050611dbb565b505050505050565b6000611dfc8383611d99565b6102a08301905092915050565b6000602082019050919050565b611e1f81611c88565b611e298184611c93565b9250611e3482611c9e565b8060005b83811015611e65578151611e4c8782611df0565b9650611e5783611e09565b925050600181019050611e38565b505050505050565b60006107e082019050611e836000830184611e16565b92915050565b60008060408385031215611ea057611e9f6119b9565b5b6000611eae858286016119e4565b9250506020611ebf858286016119e4565b9150509250929050565b611ed281611b7d565b8114611edd57600080fd5b50565b600081359050611eef81611ec9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f1a57611f19611ef5565b5b8235905067ffffffffffffffff811115611f3757611f36611efa565b5b602083019150836001820283011115611f5357611f52611eff565b5b9250929050565b60008060008060008060a08789031215611f7757611f766119b9565b5b6000611f8589828a01611ee0565b9650506020611f9689828a01611ee0565b9550506040611fa789828a016119e4565b9450506060611fb889828a016119e4565b935050608087013567ffffffffffffffff811115611fd957611fd86119be565b5b611fe589828a01611f04565b92509250509295509295509295565b60006020820190506120096000830184611a67565b92915050565b60008083601f84011261202557612024611ef5565b5b8235905067ffffffffffffffff81111561204257612041611efa565b5b60208301915083600182028301111561205e5761205d611eff565b5b9250929050565b60008190508260206003028201111561208157612080611eff565b5b92915050565b60008060008060008060c087890312156120a4576120a36119b9565b5b600087013567ffffffffffffffff8111156120c2576120c16119be565b5b6120ce89828a0161200f565b965096505060206120e189828a01612065565b94505060806120f289828a01611ee0565b93505060a087013567ffffffffffffffff811115612113576121126119be565b5b61211f89828a01611f04565b92509250509295509295509295565b60006020820190506121436000830184611b89565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061219057607f821691505b6020821081036121a3576121a2612149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121ed6000830184611a58565b92915050565b600081519050612202816119cd565b92915050565b60006020828403121561221e5761221d6119b9565b5b600061222c848285016121f3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612291602383611a81565b915061229c82612235565b604082019050919050565b600060208201905081810360008301526122c081612284565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612301826119c3565b915061230c836119c3565b9250828203905081811115612324576123236122c7565b5b92915050565b6000612335826119c3565b9150612340836119c3565b9250828201905080821115612358576123576122c7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b60006123ba603183611a81565b91506123c58261235e565b604082019050919050565b600060208201905081810360008301526123e9816123ad565b9050919050565b600080600060608486031215612409576124086119b9565b5b6000612417868287016119e4565b9350506020612428868287016119e4565b9250506040612439868287016119e4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612479600e83611a81565b915061248482612443565b602082019050919050565b60006040820190506124a46000830184611a67565b81810360208301526124b58161246c565b905092915050565b60006124c8826119c3565b91506124d3836119c3565b92508282026124e1816119c3565b915082820484148315176124f8576124f76122c7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612535601683611a81565b9150612540826124ff565b602082019050919050565b6000602082019050818103600083015261256481612528565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b60006125a1601483611a81565b91506125ac8261256b565b602082019050919050565b60006040820190506125cc6000830184611a67565b81810360208301526125dd81612594565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b600061261b601683611a81565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612687601683611a81565b915061269282612651565b602082019050919050565b600060208201905081810360008301526126b68161267a565b9050919050565b60008190508160005260206000209050919050565b600081546126df81612178565b6126e98186611ba3565b94506001821660008114612704576001811461271a5761274d565b60ff19831686528115156020028601935061274d565b612723856126bd565b60005b8381101561274557815481890152600182019150602081019050612726565b808801955050505b50505092915050565b600060608201905061276b6000830186611a67565b6127786020830185611a67565b818103604083015261278a81846126d2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ce826119c3565b91506127d9836119c3565b9250826127e9576127e8612794565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612876604e83611a81565b9150612881826127f4565b606082019050919050565b600060208201905081810360008301526128a581612869565b9050919050565b60006128b7826119c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e9576128e86122c7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612953565b61299a8683612953565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129d76129d26129cd846119c3565b6129b2565b6119c3565b9050919050565b6000819050919050565b6129f1836129bc565b612a056129fd826129de565b848454612960565b825550505050565b600090565b612a1a612a0d565b612a258184846129e8565b505050565b5b81811015612a4957612a3e600082612a12565b600181019050612a2b565b5050565b601f821115612a8e57612a5f8161292e565b612a6884612943565b81016020851015612a77578190505b612a8b612a8385612943565b830182612a2a565b50505b505050565b600082821c905092915050565b6000612ab160001984600802612a93565b1980831691505092915050565b6000612aca8383612aa0565b9150826002028217905092915050565b612ae483836128f4565b67ffffffffffffffff811115612afd57612afc6128ff565b5b612b078254612178565b612b12828285612a4d565b6000601f831160018114612b415760008415612b2f578287013590505b612b398582612abe565b865550612ba1565b601f198416612b4f8661292e565b60005b82811015612b7757848901358255600182019150602085019450602081019050612b52565b86831015612b945784890135612b90601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bf657612bc7816126bd565b612bd084612943565b81016020851015612bdf578190505b612bf3612beb85612943565b830182612a2a565b50505b505050565b612c058383612baa565b67ffffffffffffffff811115612c1e57612c1d6128ff565b5b612c288254612178565b612c33828285612bb5565b6000601f831160018114612c625760008415612c50578287013590505b612c5a8582612abe565b865550612cc2565b601f198416612c70866126bd565b60005b82811015612c9857848901358255600182019150602085019450602081019050612c73565b86831015612cb55784890135612cb1601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d27602b83611a81565b9150612d3282612ccb565b604082019050919050565b60006020820190508181036000830152612d5681612d1a565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612db9602d83611a81565b9150612dc482612d5d565b604082019050919050565b6000604082019050612de46000830184611a67565b8181036020830152612df581612dac565b905092915050565b6000606082019050612e126000830186611a67565b612e1f6020830185611a67565b612e2c6040830184611a67565b949350505050565b60008154612e4181612178565b612e4b8186611a81565b94506001821660008114612e665760018114612e7c57612eaf565b60ff198316865281151560200286019350612eaf565b612e858561292e565b60005b83811015612ea757815481890152600182019150602081019050612e88565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ee48383611cc8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612f1a612f1583612ef0565b612efd565b9050919050565b6000612f2d8254612f07565b9050919050565b6000600182019050919050565b612f4a81612eb8565b612f548184612ec3565b9250612f5f82612ece565b8060005b83811015612f9757612f7482612f21565b612f7e8782612ed8565b9650612f8983612f34565b925050600181019050612f63565b505050505050565b6000610140820190508181036000830152612fba818b612e34565b9050612fc9602083018a611a67565b612fd66040830189612f41565b612fe36080830188612f41565b612ff060c0830187611a67565b612ffd60e0830186611b89565b61300b610100830185611b89565b81810361012083015261301e8184611bb4565b90509998505050505050505050565b60006040820190506130426000830185611a67565b61304f6020830184611a67565b939250505056fea26469706673582212205ede6b9d00263a10613de5a0d6cbaa2c3e3b424223bf9d31d5ede9f5da49995d64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610168578063cac152a414610191578063da35c664146101c1578063ea923e63146101ec5761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119f9565b610229565b6040516100bc99989796959493929190611bed565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119f9565b6103c1565b6040516100f99190611e6d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e89565b6106fa565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f5a565b6108e5565b60405161015f9190611ff4565b60405180910390f35b34801561017457600080fd5b5061018f600480360381019061018a91906119f9565b6111ba565b005b6101ab60048036038101906101a69190612087565b6112e6565b6040516101b89190611ff4565b60405180910390f35b3480156101cd57600080fd5b506101d66114b0565b6040516101e39190611ff4565b60405180910390f35b3480156101f857600080fd5b50610213600480360381019061020e91906119f9565b6114b6565b604051610220919061212e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461027e90612178565b80601f01602080910402602001604051908101604052809291908181526020018280546102aa90612178565b80156102f75780601f106102cc576101008083540402835291602001916102f7565b820191906000526020600020905b8154815290600101906020018083116102da57829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461033e90612178565b80601f016020809104026020016040519081016040528092919081815260200182805461036a90612178565b80156103b75780601f1061038c576101008083540402835291602001916103b7565b820191906000526020600020905b81548152906001019060200180831161039a57829003601f168201915b5050505050905089565b6103c961191a565b60008060008481526020019081526020016000209050806008016000600381106103f6576103f56121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156104c6578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610414565b50505050826000600381106104de576104dd6121a9565b5b6020020181905250806008016001600381106104fd576104fc6121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156105cd578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061051b565b50505050826001600381106105e5576105e46121a9565b5b602002018190525080600801600260038110610604576106036121a9565b5b60110201600101600380602002604051908101604052809291906000905b828210156106d4578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610622565b50505050826002600381106106ec576106eb6121a9565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161075491906121d8565b602060405180830381865afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107959190612208565b10156107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd906122a7565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461084191906122f6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550818160070160008282546108a2919061232a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108d89190611ff4565b60405180910390a1505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906123d0565b60405180910390fd5b6000806000858581019061098991906123f0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109bd576109bc6121a9565b5b6011020190506000816001018260100154600381106109df576109de6121a9565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508a81600201819055508981600301819055508b8160040160016101000a81548160ff0219169083151502179055508c8160040160006101000a81548160ff0219169083151502179055508b610adf5760048360050160006101000a81548160ff02191690836005811115610a7957610a78611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610aad919061248f565b60405180910390a183836002016000828254610ac9919061232a565b92505081905550600196505050505050506111b0565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612208565b8b8d610b7c919061232a565b6002610b8891906124bd565b1015905060016005811115610ba057610b9f611b06565b5b8460050160009054906101000a900460ff166005811115610bc457610bc3611b06565b5b03610ce55760008614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c039061254b565b60405180910390fd5b8d8015610c165750805b15610c4d5760028460050160006101000a81548160ff02191690836005811115610c4357610c42611b06565b5b0217905550610ce0565b6002836010015410610cc25760048460050160006101000a81548160ff02191690836005811115610c8157610c80611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610cb591906125b7565b60405180910390a1610cdf565b6001836010016000828254610cd7919061232a565b925050819055505b5b61108c565b60026005811115610cf957610cf8611b06565b5b8460050160009054906101000a900460ff166005811115610d1d57610d1c611b06565b5b03610e3e5760018614610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612631565b60405180910390fd5b8d8015610d6f5750805b15610da65760038460050160006101000a81548160ff02191690836005811115610d9c57610d9b611b06565b5b0217905550610e39565b6002836010015410610e1b5760048460050160006101000a81548160ff02191690836005811115610dda57610dd9611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610e0e91906125b7565b60405180910390a1610e38565b6001836010016000828254610e30919061232a565b925050819055505b5b61108b565b60036005811115610e5257610e51611b06565b5b8460050160009054906101000a900460ff166005811115610e7657610e75611b06565b5b0361108a5760028614610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb59061269d565b60405180910390fd5b8d8015610ec85750805b15610ff65760058460050160006101000a81548160ff02191690836005811115610ef557610ef4611b06565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f299190611ff4565b60405180910390a183603b0160009054906101000a900460ff1615610ff1578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728d8d87603c016040518463ffffffff1660e01b8152600401610fac93929190612756565b6020604051808303816000875af1158015610fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190612208565b505b611089565b600283601001541061106b5760048460050160006101000a81548160ff0219169083600581111561102a57611029611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8760405161105e91906125b7565b60405180910390a1611088565b6001836010016000828254611080919061232a565b925050819055505b5b5b5b5b600160058111156110a05761109f611b06565b5b8460050160009054906101000a900460ff1660058111156110c4576110c3611b06565b5b036110ea576110e5876000600a87600101546110e091906127c3565b6116e2565b6111a4565b600260058111156110fe576110fd611b06565b5b8460050160009054906101000a900460ff16600581111561112257611121611b06565b5b0361114857611143876001600a876001015461113e91906127c3565b6116e2565b6111a3565b6003600581111561115c5761115b611b06565b5b8460050160009054906101000a900460ff1660058111156111805761117f611b06565b5b036111a2576111a1876002600a876001015461119c91906127c3565b6116e2565b5b5b5b60009750505050505050505b9695505050505050565b60008060008381526020019081526020016000209050600460058111156111e4576111e3611b06565b5b8160050160009054906101000a900460ff16600581111561120857611207611b06565b5b1480611248575060058081111561122257611221611b06565b5b8160050160009054906101000a900460ff16600581111561124657611245611b06565b5b145b611287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127e9061288c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112e0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112fb906128ac565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261136d929190612ada565b504281600401819055508560006003811061138b5761138a6121a9565b5b6020020135816008016000600381106113a7576113a66121a9565b5b6011020160000181905550856001600381106113c6576113c56121a9565b5b6020020135816008016001600381106113e2576113e16121a9565b5b601102016000018190555085600260038110611401576114006121a9565b5b60200201358160080160026003811061141d5761141c6121a9565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261146d929190612bfb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161149d9190611ff4565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114e1576114e0611b06565b5b8160050160009054906101000a900460ff16600581111561150557611504611b06565b5b14611545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153c90612d3d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d69190612208565b8260070154600a6115e791906124bd565b1015905060006301e133808360040154611601919061232a565b421190508161168c5780156116805760048360050160006101000a81548160ff0219169083600581111561163857611637611b06565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161166c9190612dcf565b60405180910390a1600093505050506116dd565b600093505050506116dd565b60018360050160006101000a81548160ff021916908360058111156116b4576116b3611b06565b5b02179055506116d5856000600a86600101546116d091906127c3565b6116e2565b600193505050505b919050565b600080600085815260200190815260200160002090508181600201600082825461170c91906122f6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061176c5761176b6121a9565b5b601102016000015460068960038110611788576117876121a9565b5b60020201600c8a600381106117a05761179f6121a9565b5b6002020160028b600381106117b8576117b76121a9565b5b015460058c600381106117ce576117cd6121a9565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117fb93929190612dfd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161182d989796959493929190612f9f565b60206040518083038185885af115801561184b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118709190612208565b9050600082600801856003811061188a576118896121a9565b5b6011020190506000816001018260100154600381106118ac576118ab6121a9565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c673479878460405161190992919061302d565b60405180910390a150505050505050565b60405180606001604052806003905b611931611947565b8152602001906001900390816119295790505090565b60405180606001604052806003905b61195e611974565b8152602001906001900390816119565790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119d6816119c3565b81146119e157600080fd5b50565b6000813590506119f3816119cd565b92915050565b600060208284031215611a0f57611a0e6119b9565b5b6000611a1d848285016119e4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a5182611a26565b9050919050565b611a6181611a46565b82525050565b611a70816119c3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ab0578082015181840152602081019050611a95565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ad882611a76565b611ae28185611a81565b9350611af2818560208601611a92565b611afb81611abc565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b4657611b45611b06565b5b50565b6000819050611b5782611b35565b919050565b6000611b6782611b49565b9050919050565b611b7781611b5c565b82525050565b60008115159050919050565b611b9281611b7d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611bbf82611b98565b611bc98185611ba3565b9350611bd9818560208601611a92565b611be281611abc565b840191505092915050565b600061012082019050611c03600083018c611a58565b611c10602083018b611a67565b611c1d604083018a611a67565b8181036060830152611c2f8189611acd565b9050611c3e6080830188611a67565b611c4b60a0830187611b6e565b611c5860c0830186611a67565b611c6560e0830185611b89565b818103610100830152611c788184611bb4565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cd1816119c3565b82525050565b611ce081611b7d565b82525050565b60e082016000820151611cfc6000850182611cc8565b506020820151611d0f6020850182611cd7565b506040820151611d226040850182611cd7565b506060820151611d356060850182611cc8565b506080820151611d486080850182611cc8565b5060a0820151611d5b60a0850182611cd7565b5060c0820151611d6e60c0850182611cd7565b50505050565b6000611d808383611ce6565b60e08301905092915050565b6000602082019050919050565b611da281611ca8565b611dac8184611cb3565b9250611db782611cbe565b8060005b83811015611de8578151611dcf8782611d74565b9650611dda83611d8c565b925050600181019050611dbb565b505050505050565b6000611dfc8383611d99565b6102a08301905092915050565b6000602082019050919050565b611e1f81611c88565b611e298184611c93565b9250611e3482611c9e565b8060005b83811015611e65578151611e4c8782611df0565b9650611e5783611e09565b925050600181019050611e38565b505050505050565b60006107e082019050611e836000830184611e16565b92915050565b60008060408385031215611ea057611e9f6119b9565b5b6000611eae858286016119e4565b9250506020611ebf858286016119e4565b9150509250929050565b611ed281611b7d565b8114611edd57600080fd5b50565b600081359050611eef81611ec9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611f1a57611f19611ef5565b5b8235905067ffffffffffffffff811115611f3757611f36611efa565b5b602083019150836001820283011115611f5357611f52611eff565b5b9250929050565b60008060008060008060a08789031215611f7757611f766119b9565b5b6000611f8589828a01611ee0565b9650506020611f9689828a01611ee0565b9550506040611fa789828a016119e4565b9450506060611fb889828a016119e4565b935050608087013567ffffffffffffffff811115611fd957611fd86119be565b5b611fe589828a01611f04565b92509250509295509295509295565b60006020820190506120096000830184611a67565b92915050565b60008083601f84011261202557612024611ef5565b5b8235905067ffffffffffffffff81111561204257612041611efa565b5b60208301915083600182028301111561205e5761205d611eff565b5b9250929050565b60008190508260206003028201111561208157612080611eff565b5b92915050565b60008060008060008060c087890312156120a4576120a36119b9565b5b600087013567ffffffffffffffff8111156120c2576120c16119be565b5b6120ce89828a0161200f565b965096505060206120e189828a01612065565b94505060806120f289828a01611ee0565b93505060a087013567ffffffffffffffff811115612113576121126119be565b5b61211f89828a01611f04565b92509250509295509295509295565b60006020820190506121436000830184611b89565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061219057607f821691505b6020821081036121a3576121a2612149565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121ed6000830184611a58565b92915050565b600081519050612202816119cd565b92915050565b60006020828403121561221e5761221d6119b9565b5b600061222c848285016121f3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612291602383611a81565b915061229c82612235565b604082019050919050565b600060208201905081810360008301526122c081612284565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612301826119c3565b915061230c836119c3565b9250828203905081811115612324576123236122c7565b5b92915050565b6000612335826119c3565b9150612340836119c3565b9250828201905080821115612358576123576122c7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b60006123ba603183611a81565b91506123c58261235e565b604082019050919050565b600060208201905081810360008301526123e9816123ad565b9050919050565b600080600060608486031215612409576124086119b9565b5b6000612417868287016119e4565b9350506020612428868287016119e4565b9250506040612439868287016119e4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612479600e83611a81565b915061248482612443565b602082019050919050565b60006040820190506124a46000830184611a67565b81810360208301526124b58161246c565b905092915050565b60006124c8826119c3565b91506124d3836119c3565b92508282026124e1816119c3565b915082820484148315176124f8576124f76122c7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612535601683611a81565b9150612540826124ff565b602082019050919050565b6000602082019050818103600083015261256481612528565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b60006125a1601483611a81565b91506125ac8261256b565b602082019050919050565b60006040820190506125cc6000830184611a67565b81810360208301526125dd81612594565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b600061261b601683611a81565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612687601683611a81565b915061269282612651565b602082019050919050565b600060208201905081810360008301526126b68161267a565b9050919050565b60008190508160005260206000209050919050565b600081546126df81612178565b6126e98186611ba3565b94506001821660008114612704576001811461271a5761274d565b60ff19831686528115156020028601935061274d565b612723856126bd565b60005b8381101561274557815481890152600182019150602081019050612726565b808801955050505b50505092915050565b600060608201905061276b6000830186611a67565b6127786020830185611a67565b818103604083015261278a81846126d2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ce826119c3565b91506127d9836119c3565b9250826127e9576127e8612794565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612876604e83611a81565b9150612881826127f4565b606082019050919050565b600060208201905081810360008301526128a581612869565b9050919050565b60006128b7826119c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e9576128e86122c7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612953565b61299a8683612953565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129d76129d26129cd846119c3565b6129b2565b6119c3565b9050919050565b6000819050919050565b6129f1836129bc565b612a056129fd826129de565b848454612960565b825550505050565b600090565b612a1a612a0d565b612a258184846129e8565b505050565b5b81811015612a4957612a3e600082612a12565b600181019050612a2b565b5050565b601f821115612a8e57612a5f8161292e565b612a6884612943565b81016020851015612a77578190505b612a8b612a8385612943565b830182612a2a565b50505b505050565b600082821c905092915050565b6000612ab160001984600802612a93565b1980831691505092915050565b6000612aca8383612aa0565b9150826002028217905092915050565b612ae483836128f4565b67ffffffffffffffff811115612afd57612afc6128ff565b5b612b078254612178565b612b12828285612a4d565b6000601f831160018114612b415760008415612b2f578287013590505b612b398582612abe565b865550612ba1565b601f198416612b4f8661292e565b60005b82811015612b7757848901358255600182019150602085019450602081019050612b52565b86831015612b945784890135612b90601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bf657612bc7816126bd565b612bd084612943565b81016020851015612bdf578190505b612bf3612beb85612943565b830182612a2a565b50505b505050565b612c058383612baa565b67ffffffffffffffff811115612c1e57612c1d6128ff565b5b612c288254612178565b612c33828285612bb5565b6000601f831160018114612c625760008415612c50578287013590505b612c5a8582612abe565b865550612cc2565b601f198416612c70866126bd565b60005b82811015612c9857848901358255600182019150602085019450602081019050612c73565b86831015612cb55784890135612cb1601f891682612aa0565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d27602b83611a81565b9150612d3282612ccb565b604082019050919050565b60006020820190508181036000830152612d5681612d1a565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612db9602d83611a81565b9150612dc482612d5d565b604082019050919050565b6000604082019050612de46000830184611a67565b8181036020830152612df581612dac565b905092915050565b6000606082019050612e126000830186611a67565b612e1f6020830185611a67565b612e2c6040830184611a67565b949350505050565b60008154612e4181612178565b612e4b8186611a81565b94506001821660008114612e665760018114612e7c57612eaf565b60ff198316865281151560200286019350612eaf565b612e858561292e565b60005b83811015612ea757815481890152600182019150602081019050612e88565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ee48383611cc8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612f1a612f1583612ef0565b612efd565b9050919050565b6000612f2d8254612f07565b9050919050565b6000600182019050919050565b612f4a81612eb8565b612f548184612ec3565b9250612f5f82612ece565b8060005b83811015612f9757612f7482612f21565b612f7e8782612ed8565b9650612f8983612f34565b925050600181019050612f63565b505050505050565b6000610140820190508181036000830152612fba818b612e34565b9050612fc9602083018a611a67565b612fd66040830189612f41565b612fe36080830188612f41565b612ff060c0830187611a67565b612ffd60e0830186611b89565b61300b610100830185611b89565b81810361012083015261301e8184611bb4565b90509998505050505050505050565b60006040820190506130426000830185611a67565b61304f6020830184611a67565b939250505056fea26469706673582212205ede6b9d00263a10613de5a0d6cbaa2c3e3b424223bf9d31d5ede9f5da49995d64736f6c63430008180033", + "bytecode": "0x60a06040526040518060600160405280600060ff168152602001600160ff168152602001606460ff1681525060029060036200003d929190620001ef565b5060405180606001604052806000151515158152602001600015151515815260200160011515151581525060059060036200007a92919062000239565b5060405180606001604052806040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff1681525081526020016040518060400160405280600160ff168152602001600a60ff168152508152506006906003620000fc929190620002d9565b5060405180606001604052806040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff1681525081526020016040518060400160405280600260ff168152602001600360ff16815250815250600c9060036200017e929190620002d9565b503480156200018c57600080fd5b5060405162003524380380620035248339818101604052810190620001b291906200044e565b808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000480565b826003810192821562000226579160200282015b8281111562000225578251829060ff1690559160200191906001019062000203565b5b50905062000235919062000331565b5090565b826003601f01602090048101928215620002c65791602002820160005b838211156200029557835183826101000a81548160ff021916908315150217905550926020019260010160208160000104928301926001030262000256565b8015620002c45782816101000a81549060ff021916905560010160208160000104928301926001030262000295565b505b509050620002d5919062000331565b5090565b82600360020281019282156200031e579160200282015b828111156200031d578251829060026200030c92919062000350565b5091602001919060020190620002f0565b5b5090506200032d91906200039a565b5090565b5b808211156200034c57600081600090555060010162000332565b5090565b826002810192821562000387579160200282015b8281111562000386578251829060ff1690559160200191906001019062000364565b5b50905062000396919062000331565b5090565b5b80821115620003be5760008181620003b49190620003c2565b506002016200039b565b5090565b506000815560010160009055565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040282620003d5565b9050919050565b60006200041682620003f5565b9050919050565b620004288162000409565b81146200043457600080fd5b50565b60008151905062000448816200041d565b92915050565b600060208284031215620004675762000466620003d0565b5b6000620004778482850162000437565b91505092915050565b60805161306c620004b8600039600081816106e9015281816108d301528181610ac90152818161152901526116f7015261306c6000f3fe60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610154578063cac152a41461017d578063da35c664146101ad578063ea923e63146101d85761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119d9565b610215565b6040516100bc99989796959493929190611bcd565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119d9565b6103ad565b6040516100f99190611e4d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e69565b6106e6565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f3a565b6108d1565b005b34801561016057600080fd5b5061017b600480360381019061017691906119d9565b61119a565b005b6101976004803603810190610192919061204c565b6112c6565b6040516101a491906120f3565b60405180910390f35b3480156101b957600080fd5b506101c2611490565b6040516101cf91906120f3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa91906119d9565b611496565b60405161020c919061210e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461026a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461029690612158565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461032a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461035690612158565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905089565b6103b56118fa565b60008060008481526020019081526020016000209050806008016000600381106103e2576103e1612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156104b2578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610400565b50505050826000600381106104ca576104c9612189565b5b6020020181905250806008016001600381106104e9576104e8612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156105b9578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610507565b50505050826001600381106105d1576105d0612189565b5b6020020181905250806008016002600381106105f0576105ef612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156106c0578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061060e565b50505050826002600381106106d8576106d7612189565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161074091906121b8565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906121e8565b10156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990612287565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461082d91906122d6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181600701600082825461088e919061230a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108c491906120f3565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610956906123b0565b60405180910390fd5b6000806000848481019061097391906123d0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109a7576109a6612189565b5b6011020190506000816001018260100154600381106109c9576109c8612189565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508981600201819055508881600301819055508a8160040160016101000a81548160ff0219169083151502179055508b8160040160006101000a81548160ff0219169083151502179055508a610ac55760048360050160006101000a81548160ff02191690836005811115610a6357610a62611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610a97919061246f565b60405180910390a183836002016000828254610ab3919061230a565b92505081905550505050505050611192565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5691906121e8565b8a8c610b62919061230a565b6002610b6e919061249d565b1015905060016005811115610b8657610b85611ae6565b5b8460050160009054906101000a900460ff166005811115610baa57610ba9611ae6565b5b03610ccb5760008614610bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be99061252b565b60405180910390fd5b8c8015610bfc5750805b15610c335760028460050160006101000a81548160ff02191690836005811115610c2957610c28611ae6565b5b0217905550610cc6565b6002836010015410610ca85760048460050160006101000a81548160ff02191690836005811115610c6757610c66611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610c9b9190612597565b60405180910390a1610cc5565b6001836010016000828254610cbd919061230a565b925050819055505b5b611072565b60026005811115610cdf57610cde611ae6565b5b8460050160009054906101000a900460ff166005811115610d0357610d02611ae6565b5b03610e245760018614610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612611565b60405180910390fd5b8c8015610d555750805b15610d8c5760038460050160006101000a81548160ff02191690836005811115610d8257610d81611ae6565b5b0217905550610e1f565b6002836010015410610e015760048460050160006101000a81548160ff02191690836005811115610dc057610dbf611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610df49190612597565b60405180910390a1610e1e565b6001836010016000828254610e16919061230a565b925050819055505b5b611071565b60036005811115610e3857610e37611ae6565b5b8460050160009054906101000a900460ff166005811115610e5c57610e5b611ae6565b5b036110705760028614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061267d565b60405180910390fd5b8c8015610eae5750805b15610fdc5760058460050160006101000a81548160ff02191690836005811115610edb57610eda611ae6565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f0f91906120f3565b60405180910390a183603b0160009054906101000a900460ff1615610fd7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728c8c87603c016040518463ffffffff1660e01b8152600401610f9293929190612736565b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906121e8565b505b61106f565b60028360100154106110515760048460050160006101000a81548160ff021916908360058111156110105761100f611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516110449190612597565b60405180910390a161106e565b6001836010016000828254611066919061230a565b925050819055505b5b5b5b5b6001600581111561108657611085611ae6565b5b8460050160009054906101000a900460ff1660058111156110aa576110a9611ae6565b5b036110d0576110cb876000600a87600101546110c691906127a3565b6116c2565b61118a565b600260058111156110e4576110e3611ae6565b5b8460050160009054906101000a900460ff16600581111561110857611107611ae6565b5b0361112e57611129876001600a876001015461112491906127a3565b6116c2565b611189565b6003600581111561114257611141611ae6565b5b8460050160009054906101000a900460ff16600581111561116657611165611ae6565b5b0361118857611187876002600a876001015461118291906127a3565b6116c2565b5b5b5b505050505050505b505050505050565b60008060008381526020019081526020016000209050600460058111156111c4576111c3611ae6565b5b8160050160009054906101000a900460ff1660058111156111e8576111e7611ae6565b5b1480611228575060058081111561120257611201611ae6565b5b8160050160009054906101000a900460ff16600581111561122657611225611ae6565b5b145b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061286c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112c0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112db9061288c565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261134d929190612aba565b504281600401819055508560006003811061136b5761136a612189565b5b60200201358160080160006003811061138757611386612189565b5b6011020160000181905550856001600381106113a6576113a5612189565b5b6020020135816008016001600381106113c2576113c1612189565b5b6011020160000181905550856002600381106113e1576113e0612189565b5b6020020135816008016002600381106113fd576113fc612189565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261144d929190612bdb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161147d91906120f3565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114c1576114c0611ae6565b5b8160050160009054906101000a900460ff1660058111156114e5576114e4611ae6565b5b14611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612d1d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b691906121e8565b8260070154600a6115c7919061249d565b1015905060006301e1338083600401546115e1919061230a565b421190508161166c5780156116605760048360050160006101000a81548160ff0219169083600581111561161857611617611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161164c9190612daf565b60405180910390a1600093505050506116bd565b600093505050506116bd565b60018360050160006101000a81548160ff0219169083600581111561169457611693611ae6565b5b02179055506116b5856000600a86600101546116b091906127a3565b6116c2565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546116ec91906122d6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061174c5761174b612189565b5b60110201600001546006896003811061176857611767612189565b5b60020201600c8a600381106117805761177f612189565b5b6002020160028b6003811061179857611797612189565b5b015460058c600381106117ae576117ad612189565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117db93929190612ddd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161180d989796959493929190612f7f565b60206040518083038185885af115801561182b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061185091906121e8565b9050600082600801856003811061186a57611869612189565b5b60110201905060008160010182601001546003811061188c5761188b612189565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c67347987846040516118e992919061300d565b60405180910390a150505050505050565b60405180606001604052806003905b611911611927565b8152602001906001900390816119095790505090565b60405180606001604052806003905b61193e611954565b8152602001906001900390816119365790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119b6816119a3565b81146119c157600080fd5b50565b6000813590506119d3816119ad565b92915050565b6000602082840312156119ef576119ee611999565b5b60006119fd848285016119c4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3182611a06565b9050919050565b611a4181611a26565b82525050565b611a50816119a3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a90578082015181840152602081019050611a75565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab882611a56565b611ac28185611a61565b9350611ad2818560208601611a72565b611adb81611a9c565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b2657611b25611ae6565b5b50565b6000819050611b3782611b15565b919050565b6000611b4782611b29565b9050919050565b611b5781611b3c565b82525050565b60008115159050919050565b611b7281611b5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611b9f82611b78565b611ba98185611b83565b9350611bb9818560208601611a72565b611bc281611a9c565b840191505092915050565b600061012082019050611be3600083018c611a38565b611bf0602083018b611a47565b611bfd604083018a611a47565b8181036060830152611c0f8189611aad565b9050611c1e6080830188611a47565b611c2b60a0830187611b4e565b611c3860c0830186611a47565b611c4560e0830185611b69565b818103610100830152611c588184611b94565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cb1816119a3565b82525050565b611cc081611b5d565b82525050565b60e082016000820151611cdc6000850182611ca8565b506020820151611cef6020850182611cb7565b506040820151611d026040850182611cb7565b506060820151611d156060850182611ca8565b506080820151611d286080850182611ca8565b5060a0820151611d3b60a0850182611cb7565b5060c0820151611d4e60c0850182611cb7565b50505050565b6000611d608383611cc6565b60e08301905092915050565b6000602082019050919050565b611d8281611c88565b611d8c8184611c93565b9250611d9782611c9e565b8060005b83811015611dc8578151611daf8782611d54565b9650611dba83611d6c565b925050600181019050611d9b565b505050505050565b6000611ddc8383611d79565b6102a08301905092915050565b6000602082019050919050565b611dff81611c68565b611e098184611c73565b9250611e1482611c7e565b8060005b83811015611e45578151611e2c8782611dd0565b9650611e3783611de9565b925050600181019050611e18565b505050505050565b60006107e082019050611e636000830184611df6565b92915050565b60008060408385031215611e8057611e7f611999565b5b6000611e8e858286016119c4565b9250506020611e9f858286016119c4565b9150509250929050565b611eb281611b5d565b8114611ebd57600080fd5b50565b600081359050611ecf81611ea9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611efa57611ef9611ed5565b5b8235905067ffffffffffffffff811115611f1757611f16611eda565b5b602083019150836001820283011115611f3357611f32611edf565b5b9250929050565b60008060008060008060a08789031215611f5757611f56611999565b5b6000611f6589828a01611ec0565b9650506020611f7689828a01611ec0565b9550506040611f8789828a016119c4565b9450506060611f9889828a016119c4565b935050608087013567ffffffffffffffff811115611fb957611fb861199e565b5b611fc589828a01611ee4565b92509250509295509295509295565b60008083601f840112611fea57611fe9611ed5565b5b8235905067ffffffffffffffff81111561200757612006611eda565b5b60208301915083600182028301111561202357612022611edf565b5b9250929050565b60008190508260206003028201111561204657612045611edf565b5b92915050565b60008060008060008060c0878903121561206957612068611999565b5b600087013567ffffffffffffffff8111156120875761208661199e565b5b61209389828a01611fd4565b965096505060206120a689828a0161202a565b94505060806120b789828a01611ec0565b93505060a087013567ffffffffffffffff8111156120d8576120d761199e565b5b6120e489828a01611ee4565b92509250509295509295509295565b60006020820190506121086000830184611a47565b92915050565b60006020820190506121236000830184611b69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217057607f821691505b60208210810361218357612182612129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121cd6000830184611a38565b92915050565b6000815190506121e2816119ad565b92915050565b6000602082840312156121fe576121fd611999565b5b600061220c848285016121d3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612271602383611a61565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122e1826119a3565b91506122ec836119a3565b9250828203905081811115612304576123036122a7565b5b92915050565b6000612315826119a3565b9150612320836119a3565b9250828201905080821115612338576123376122a7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b600061239a603183611a61565b91506123a58261233e565b604082019050919050565b600060208201905081810360008301526123c98161238d565b9050919050565b6000806000606084860312156123e9576123e8611999565b5b60006123f7868287016119c4565b9350506020612408868287016119c4565b9250506040612419868287016119c4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612459600e83611a61565b915061246482612423565b602082019050919050565b60006040820190506124846000830184611a47565b81810360208301526124958161244c565b905092915050565b60006124a8826119a3565b91506124b3836119a3565b92508282026124c1816119a3565b915082820484148315176124d8576124d76122a7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612515601683611a61565b9150612520826124df565b602082019050919050565b6000602082019050818103600083015261254481612508565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612581601483611a61565b915061258c8261254b565b602082019050919050565b60006040820190506125ac6000830184611a47565b81810360208301526125bd81612574565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b60006125fb601683611a61565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612667601683611a61565b915061267282612631565b602082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b60008190508160005260206000209050919050565b600081546126bf81612158565b6126c98186611b83565b945060018216600081146126e457600181146126fa5761272d565b60ff19831686528115156020028601935061272d565b6127038561269d565b60005b8381101561272557815481890152600182019150602081019050612706565b808801955050505b50505092915050565b600060608201905061274b6000830186611a47565b6127586020830185611a47565b818103604083015261276a81846126b2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ae826119a3565b91506127b9836119a3565b9250826127c9576127c8612774565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612856604e83611a61565b9150612861826127d4565b606082019050919050565b6000602082019050818103600083015261288581612849565b9050919050565b6000612897826119a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128c9576128c86122a7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612933565b61297a8683612933565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129b76129b26129ad846119a3565b612992565b6119a3565b9050919050565b6000819050919050565b6129d18361299c565b6129e56129dd826129be565b848454612940565b825550505050565b600090565b6129fa6129ed565b612a058184846129c8565b505050565b5b81811015612a2957612a1e6000826129f2565b600181019050612a0b565b5050565b601f821115612a6e57612a3f8161290e565b612a4884612923565b81016020851015612a57578190505b612a6b612a6385612923565b830182612a0a565b50505b505050565b600082821c905092915050565b6000612a9160001984600802612a73565b1980831691505092915050565b6000612aaa8383612a80565b9150826002028217905092915050565b612ac483836128d4565b67ffffffffffffffff811115612add57612adc6128df565b5b612ae78254612158565b612af2828285612a2d565b6000601f831160018114612b215760008415612b0f578287013590505b612b198582612a9e565b865550612b81565b601f198416612b2f8661290e565b60005b82811015612b5757848901358255600182019150602085019450602081019050612b32565b86831015612b745784890135612b70601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bd657612ba78161269d565b612bb084612923565b81016020851015612bbf578190505b612bd3612bcb85612923565b830182612a0a565b50505b505050565b612be58383612b8a565b67ffffffffffffffff811115612bfe57612bfd6128df565b5b612c088254612158565b612c13828285612b95565b6000601f831160018114612c425760008415612c30578287013590505b612c3a8582612a9e565b865550612ca2565b601f198416612c508661269d565b60005b82811015612c7857848901358255600182019150602085019450602081019050612c53565b86831015612c955784890135612c91601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d07602b83611a61565b9150612d1282612cab565b604082019050919050565b60006020820190508181036000830152612d3681612cfa565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612d99602d83611a61565b9150612da482612d3d565b604082019050919050565b6000604082019050612dc46000830184611a47565b8181036020830152612dd581612d8c565b905092915050565b6000606082019050612df26000830186611a47565b612dff6020830185611a47565b612e0c6040830184611a47565b949350505050565b60008154612e2181612158565b612e2b8186611a61565b94506001821660008114612e465760018114612e5c57612e8f565b60ff198316865281151560200286019350612e8f565b612e658561290e565b60005b83811015612e8757815481890152600182019150602081019050612e68565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ec48383611ca8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612efa612ef583612ed0565b612edd565b9050919050565b6000612f0d8254612ee7565b9050919050565b6000600182019050919050565b612f2a81612e98565b612f348184612ea3565b9250612f3f82612eae565b8060005b83811015612f7757612f5482612f01565b612f5e8782612eb8565b9650612f6983612f14565b925050600181019050612f43565b505050505050565b6000610140820190508181036000830152612f9a818b612e14565b9050612fa9602083018a611a47565b612fb66040830189612f21565b612fc36080830188612f21565b612fd060c0830187611a47565b612fdd60e0830186611b69565b612feb610100830185611b69565b818103610120830152612ffe8184611b94565b90509998505050505050505050565b60006040820190506130226000830185611a47565b61302f6020830184611a47565b939250505056fea2646970667358221220dc4d5952cff4372a844a0b5c95d474e26f7e69b4b69b4ee942e143589c1242ec64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061007b5760003560e01c8063c019faab1161004e578063c019faab14610154578063cac152a41461017d578063da35c664146101ad578063ea923e63146101d85761007b565b8063013cf08b1461008057806362d26ed7146100c5578063a3bb24cc14610102578063b4e6a1d51461012b575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a291906119d9565b610215565b6040516100bc99989796959493929190611bcd565b60405180910390f35b3480156100d157600080fd5b506100ec60048036038101906100e791906119d9565b6103ad565b6040516100f99190611e4d565b60405180910390f35b34801561010e57600080fd5b5061012960048036038101906101249190611e69565b6106e6565b005b34801561013757600080fd5b50610152600480360381019061014d9190611f3a565b6108d1565b005b34801561016057600080fd5b5061017b600480360381019061017691906119d9565b61119a565b005b6101976004803603810190610192919061204c565b6112c6565b6040516101a491906120f3565b60405180910390f35b3480156101b957600080fd5b506101c2611490565b6040516101cf91906120f3565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa91906119d9565b611496565b60405161020c919061210e565b60405180910390f35b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201549080600301805461026a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461029690612158565b80156102e35780601f106102b8576101008083540402835291602001916102e3565b820191906000526020600020905b8154815290600101906020018083116102c657829003601f168201915b5050505050908060040154908060050160009054906101000a900460ff169080600701549080603b0160009054906101000a900460ff169080603c01805461032a90612158565b80601f016020809104026020016040519081016040528092919081815260200182805461035690612158565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905089565b6103b56118fa565b60008060008481526020019081526020016000209050806008016000600381106103e2576103e1612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156104b2578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610400565b50505050826000600381106104ca576104c9612189565b5b6020020181905250806008016001600381106104e9576104e8612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156105b9578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff16151515158152505081526020019060010190610507565b50505050826001600381106105d1576105d0612189565b5b6020020181905250806008016002600381106105f0576105ef612189565b5b60110201600101600380602002604051908101604052809291906000905b828210156106c0578382600502016040518060e0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016001820160019054906101000a900460ff1615151515815260200160028201548152602001600382015481526020016004820160009054906101000a900460ff161515151581526020016004820160019054906101000a900460ff1615151515815250508152602001906001019061060e565b50505050826002600381106106d8576106d7612189565b5b602002018190525050919050565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161074091906121b8565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906121e8565b10156107c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b990612287565b60405180910390fd5b600080600084815260200190815260200160002090508060060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600701600082825461082d91906122d6565b92505081905550818160060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181600701600082825461088e919061230a565b925050819055507fc23775ba00d23f337b9f790bd67eb5194aa9b95876933f9ccd1887becbb55ccb836040516108c491906120f3565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610956906123b0565b60405180910390fd5b6000806000848481019061097391906123d0565b9250925092506000806000858152602001908152602001600020905060008160080184600381106109a7576109a6612189565b5b6011020190506000816001018260100154600381106109c9576109c8612189565b5b60050201905060018160010160016101000a81548160ff0219169083151502179055508981600201819055508881600301819055508a8160040160016101000a81548160ff0219169083151502179055508b8160040160006101000a81548160ff0219169083151502179055508a610ac55760048360050160006101000a81548160ff02191690836005811115610a6357610a62611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb86604051610a97919061246f565b60405180910390a183836002016000828254610ab3919061230a565b92505081905550505050505050611192565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5691906121e8565b8a8c610b62919061230a565b6002610b6e919061249d565b1015905060016005811115610b8657610b85611ae6565b5b8460050160009054906101000a900460ff166005811115610baa57610ba9611ae6565b5b03610ccb5760008614610bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be99061252b565b60405180910390fd5b8c8015610bfc5750805b15610c335760028460050160006101000a81548160ff02191690836005811115610c2957610c28611ae6565b5b0217905550610cc6565b6002836010015410610ca85760048460050160006101000a81548160ff02191690836005811115610c6757610c66611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610c9b9190612597565b60405180910390a1610cc5565b6001836010016000828254610cbd919061230a565b925050819055505b5b611072565b60026005811115610cdf57610cde611ae6565b5b8460050160009054906101000a900460ff166005811115610d0357610d02611ae6565b5b03610e245760018614610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612611565b60405180910390fd5b8c8015610d555750805b15610d8c5760038460050160006101000a81548160ff02191690836005811115610d8257610d81611ae6565b5b0217905550610e1f565b6002836010015410610e015760048460050160006101000a81548160ff02191690836005811115610dc057610dbf611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb87604051610df49190612597565b60405180910390a1610e1e565b6001836010016000828254610e16919061230a565b925050819055505b5b611071565b60036005811115610e3857610e37611ae6565b5b8460050160009054906101000a900460ff166005811115610e5c57610e5b611ae6565b5b036110705760028614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b9061267d565b60405180910390fd5b8c8015610eae5750805b15610fdc5760058460050160006101000a81548160ff02191690836005811115610edb57610eda611ae6565b5b02179055507fd24c2047577899547bacebb29e319fc7d73f6712b5adb401d45556f34bb2aa3b87604051610f0f91906120f3565b60405180910390a183603b0160009054906101000a900460ff1615610fd7578360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663815a05728c8c87603c016040518463ffffffff1660e01b8152600401610f9293929190612736565b6020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906121e8565b505b61106f565b60028360100154106110515760048460050160006101000a81548160ff021916908360058111156110105761100f611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb876040516110449190612597565b60405180910390a161106e565b6001836010016000828254611066919061230a565b925050819055505b5b5b5b5b6001600581111561108657611085611ae6565b5b8460050160009054906101000a900460ff1660058111156110aa576110a9611ae6565b5b036110d0576110cb876000600a87600101546110c691906127a3565b6116c2565b61118a565b600260058111156110e4576110e3611ae6565b5b8460050160009054906101000a900460ff16600581111561110857611107611ae6565b5b0361112e57611129876001600a876001015461112491906127a3565b6116c2565b611189565b6003600581111561114257611141611ae6565b5b8460050160009054906101000a900460ff16600581111561116657611165611ae6565b5b0361118857611187876002600a876001015461118291906127a3565b6116c2565b5b5b5b505050505050505b505050505050565b60008060008381526020019081526020016000209050600460058111156111c4576111c3611ae6565b5b8160050160009054906101000a900460ff1660058111156111e8576111e7611ae6565b5b1480611228575060058081111561120257611201611ae6565b5b8160050160009054906101000a900460ff16600581111561122657611225611ae6565b5b145b611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061286c565b60405180910390fd5b600081600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156112c0573d6000803e3d6000fd5b50505050565b6000600160008154809291906112db9061288c565b91905055905060008060008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550878782600301918261134d929190612aba565b504281600401819055508560006003811061136b5761136a612189565b5b60200201358160080160006003811061138757611386612189565b5b6011020160000181905550856001600381106113a6576113a5612189565b5b6020020135816008016001600381106113c2576113c1612189565b5b6011020160000181905550856002600381106113e1576113e0612189565b5b6020020135816008016002600381106113fd576113fc612189565b5b6011020160000181905550348160010181905550806001015481600201819055508481603b0160006101000a81548160ff021916908315150217905550838382603c01918261144d929190612bdb565b507f9a863892f20a6b9c6cec64d611b5864be6373191ce2cacc3b05a299bce3bf80e8260405161147d91906120f3565b60405180910390a1509695505050505050565b60015481565b6000806000808481526020019081526020016000209050600060058111156114c1576114c0611ae6565b5b8160050160009054906101000a900460ff1660058111156114e5576114e4611ae6565b5b14611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151c90612d1d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b691906121e8565b8260070154600a6115c7919061249d565b1015905060006301e1338083600401546115e1919061230a565b421190508161166c5780156116605760048360050160006101000a81548160ff0219169083600581111561161857611617611ae6565b5b02179055507f2a15f4605f8e68cbaccd2234253a8189163d500a6f60c1751405443ca1562beb8560405161164c9190612daf565b60405180910390a1600093505050506116bd565b600093505050506116bd565b60018360050160006101000a81548160ff0219169083600581111561169457611693611ae6565b5b02179055506116b5856000600a86600101546116b091906127a3565b6116c2565b600193505050505b919050565b60008060008581526020019081526020016000209050818160020160008282546116ec91906122d6565b9250508190555060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c73848460030185600801886003811061174c5761174b612189565b5b60110201600001546006896003811061176857611767612189565b5b60020201600c8a600381106117805761177f612189565b5b6002020160028b6003811061179857611797612189565b5b015460058c600381106117ae576117ad612189565b5b602091828204019190069054906101000a900460ff1660018e8e8e6040516020016117db93929190612ddd565b6040516020818303038152906040526040518a63ffffffff1660e01b815260040161180d989796959493929190612f7f565b60206040518083038185885af115801561182b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061185091906121e8565b9050600082600801856003811061186a57611869612189565b5b60110201905060008160010182601001546003811061188c5761188b612189565b5b60050201905082816000018190555060018160010160006101000a81548160ff0219169083151502179055507f4c14e16a98683e5b8bd70d51192048d0499fb3999b27ff1e9dce7e4a2c67347987846040516118e992919061300d565b60405180910390a150505050505050565b60405180606001604052806003905b611911611927565b8152602001906001900390816119095790505090565b60405180606001604052806003905b61193e611954565b8152602001906001900390816119365790505090565b6040518060e001604052806000815260200160001515815260200160001515815260200160008152602001600081526020016000151581526020016000151581525090565b600080fd5b600080fd5b6000819050919050565b6119b6816119a3565b81146119c157600080fd5b50565b6000813590506119d3816119ad565b92915050565b6000602082840312156119ef576119ee611999565b5b60006119fd848285016119c4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a3182611a06565b9050919050565b611a4181611a26565b82525050565b611a50816119a3565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a90578082015181840152602081019050611a75565b60008484015250505050565b6000601f19601f8301169050919050565b6000611ab882611a56565b611ac28185611a61565b9350611ad2818560208601611a72565b611adb81611a9c565b840191505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60068110611b2657611b25611ae6565b5b50565b6000819050611b3782611b15565b919050565b6000611b4782611b29565b9050919050565b611b5781611b3c565b82525050565b60008115159050919050565b611b7281611b5d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611b9f82611b78565b611ba98185611b83565b9350611bb9818560208601611a72565b611bc281611a9c565b840191505092915050565b600061012082019050611be3600083018c611a38565b611bf0602083018b611a47565b611bfd604083018a611a47565b8181036060830152611c0f8189611aad565b9050611c1e6080830188611a47565b611c2b60a0830187611b4e565b611c3860c0830186611a47565b611c4560e0830185611b69565b818103610100830152611c588184611b94565b90509a9950505050505050505050565b600060039050919050565b600081905092915050565b6000819050919050565b600060039050919050565b600081905092915050565b6000819050919050565b611cb1816119a3565b82525050565b611cc081611b5d565b82525050565b60e082016000820151611cdc6000850182611ca8565b506020820151611cef6020850182611cb7565b506040820151611d026040850182611cb7565b506060820151611d156060850182611ca8565b506080820151611d286080850182611ca8565b5060a0820151611d3b60a0850182611cb7565b5060c0820151611d4e60c0850182611cb7565b50505050565b6000611d608383611cc6565b60e08301905092915050565b6000602082019050919050565b611d8281611c88565b611d8c8184611c93565b9250611d9782611c9e565b8060005b83811015611dc8578151611daf8782611d54565b9650611dba83611d6c565b925050600181019050611d9b565b505050505050565b6000611ddc8383611d79565b6102a08301905092915050565b6000602082019050919050565b611dff81611c68565b611e098184611c73565b9250611e1482611c7e565b8060005b83811015611e45578151611e2c8782611dd0565b9650611e3783611de9565b925050600181019050611e18565b505050505050565b60006107e082019050611e636000830184611df6565b92915050565b60008060408385031215611e8057611e7f611999565b5b6000611e8e858286016119c4565b9250506020611e9f858286016119c4565b9150509250929050565b611eb281611b5d565b8114611ebd57600080fd5b50565b600081359050611ecf81611ea9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611efa57611ef9611ed5565b5b8235905067ffffffffffffffff811115611f1757611f16611eda565b5b602083019150836001820283011115611f3357611f32611edf565b5b9250929050565b60008060008060008060a08789031215611f5757611f56611999565b5b6000611f6589828a01611ec0565b9650506020611f7689828a01611ec0565b9550506040611f8789828a016119c4565b9450506060611f9889828a016119c4565b935050608087013567ffffffffffffffff811115611fb957611fb861199e565b5b611fc589828a01611ee4565b92509250509295509295509295565b60008083601f840112611fea57611fe9611ed5565b5b8235905067ffffffffffffffff81111561200757612006611eda565b5b60208301915083600182028301111561202357612022611edf565b5b9250929050565b60008190508260206003028201111561204657612045611edf565b5b92915050565b60008060008060008060c0878903121561206957612068611999565b5b600087013567ffffffffffffffff8111156120875761208661199e565b5b61209389828a01611fd4565b965096505060206120a689828a0161202a565b94505060806120b789828a01611ec0565b93505060a087013567ffffffffffffffff8111156120d8576120d761199e565b5b6120e489828a01611ee4565b92509250509295509295509295565b60006020820190506121086000830184611a47565b92915050565b60006020820190506121236000830184611b69565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061217057607f821691505b60208210810361218357612182612129565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020820190506121cd6000830184611a38565b92915050565b6000815190506121e2816119ad565b92915050565b6000602082840312156121fe576121fd611999565b5b600061220c848285016121d3565b91505092915050565b7f53656e6465722068617320696e73756666696369656e74205245502062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000612271602383611a61565b915061227c82612215565b604082019050919050565b600060208201905081810360008301526122a081612264565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122e1826119a3565b91506122ec836119a3565b9250828203905081811115612304576123036122a7565b5b92915050565b6000612315826119a3565b9150612320836119a3565b9250828201905080821115612338576123376122a7565b5b92915050565b7f6f6e56616c6964617465206d6179206f6e6c792062652063616c6c656420627960008201527f207468652044414f20636f6e7472616374000000000000000000000000000000602082015250565b600061239a603183611a61565b91506123a58261233e565b604082019050919050565b600060208201905081810360008301526123c98161238d565b9050919050565b6000806000606084860312156123e9576123e8611999565b5b60006123f7868287016119c4565b9350506020612408868287016119c4565b9250506040612419868287016119c4565b9150509250925092565b7f51756f72756d206e6f74206d6574000000000000000000000000000000000000600082015250565b6000612459600e83611a61565b915061246482612423565b602082019050919050565b60006040820190506124846000830184611a47565b81810360208301526124958161244c565b905092915050565b60006124a8826119a3565b91506124b3836119a3565b92508282026124c1816119a3565b915082820484148315176124d8576124d76122a7565b5b5092915050565b7f5374616765203020696e646578206d69736d6174636800000000000000000000600082015250565b6000612515601683611a61565b9150612520826124df565b602082019050919050565b6000602082019050818103600083015261254481612508565b9050919050565b7f526574727920636f756e74206578636565646564000000000000000000000000600082015250565b6000612581601483611a61565b915061258c8261254b565b602082019050919050565b60006040820190506125ac6000830184611a47565b81810360208301526125bd81612574565b905092915050565b7f5374616765203120696e646578206d69736d6174636800000000000000000000600082015250565b60006125fb601683611a61565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f5374616765203220696e646578206d69736d6174636800000000000000000000600082015250565b6000612667601683611a61565b915061267282612631565b602082019050919050565b600060208201905081810360008301526126968161265a565b9050919050565b60008190508160005260206000209050919050565b600081546126bf81612158565b6126c98186611b83565b945060018216600081146126e457600181146126fa5761272d565b60ff19831686528115156020028601935061272d565b6127038561269d565b60005b8381101561272557815481890152600182019150602081019050612706565b808801955050505b50505092915050565b600060608201905061274b6000830186611a47565b6127586020830185611a47565b818103604083015261276a81846126b2565b9050949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006127ae826119a3565b91506127b9836119a3565b9250826127c9576127c8612774565b5b828204905092915050565b7f52656d61696e696e6720666565732063616e206f6e6c79206265207265636c6160008201527f696d6564207768656e2070726f706f73616c20686173206265656e206163636560208201527f70746564206f72206661696c6564000000000000000000000000000000000000604082015250565b6000612856604e83611a61565b9150612861826127d4565b606082019050919050565b6000602082019050818103600083015261288581612849565b9050919050565b6000612897826119a3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128c9576128c86122a7565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026129707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612933565b61297a8683612933565b95508019841693508086168417925050509392505050565b6000819050919050565b60006129b76129b26129ad846119a3565b612992565b6119a3565b9050919050565b6000819050919050565b6129d18361299c565b6129e56129dd826129be565b848454612940565b825550505050565b600090565b6129fa6129ed565b612a058184846129c8565b505050565b5b81811015612a2957612a1e6000826129f2565b600181019050612a0b565b5050565b601f821115612a6e57612a3f8161290e565b612a4884612923565b81016020851015612a57578190505b612a6b612a6385612923565b830182612a0a565b50505b505050565b600082821c905092915050565b6000612a9160001984600802612a73565b1980831691505092915050565b6000612aaa8383612a80565b9150826002028217905092915050565b612ac483836128d4565b67ffffffffffffffff811115612add57612adc6128df565b5b612ae78254612158565b612af2828285612a2d565b6000601f831160018114612b215760008415612b0f578287013590505b612b198582612a9e565b865550612b81565b601f198416612b2f8661290e565b60005b82811015612b5757848901358255600182019150602085019450602081019050612b32565b86831015612b745784890135612b70601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b600082905092915050565b601f821115612bd657612ba78161269d565b612bb084612923565b81016020851015612bbf578190505b612bd3612bcb85612923565b830182612a0a565b50505b505050565b612be58383612b8a565b67ffffffffffffffff811115612bfe57612bfd6128df565b5b612c088254612158565b612c13828285612b95565b6000601f831160018114612c425760008415612c30578287013590505b612c3a8582612a9e565b865550612ca2565b601f198416612c508661269d565b60005b82811015612c7857848901358255600182019150602085019450602081019050612c53565b86831015612c955784890135612c91601f891682612a80565b8355505b6001600288020188555050505b50505050505050565b7f4174746573746174696f6e206f6e6c79207065727461696e7320746f2050726f60008201527f706f73616c207374616765000000000000000000000000000000000000000000602082015250565b6000612d07602b83611a61565b9150612d1282612cab565b604082019050919050565b60006020820190508181036000830152612d3681612cfa565b9050919050565b7f4578706972656420776974686f7574206d656574696e6720617474657374617460008201527f696f6e207468726573686f6c6400000000000000000000000000000000000000602082015250565b6000612d99602d83611a61565b9150612da482612d3d565b604082019050919050565b6000604082019050612dc46000830184611a47565b8181036020830152612dd581612d8c565b905092915050565b6000606082019050612df26000830186611a47565b612dff6020830185611a47565b612e0c6040830184611a47565b949350505050565b60008154612e2181612158565b612e2b8186611a61565b94506001821660008114612e465760018114612e5c57612e8f565b60ff198316865281151560200286019350612e8f565b612e658561290e565b60005b83811015612e8757815481890152600182019150602081019050612e68565b808801955050505b50505092915050565b600060029050919050565b600081905092915050565b6000819050919050565b6000612ec48383611ca8565b60208301905092915050565b60008160001c9050919050565b6000819050919050565b6000612efa612ef583612ed0565b612edd565b9050919050565b6000612f0d8254612ee7565b9050919050565b6000600182019050919050565b612f2a81612e98565b612f348184612ea3565b9250612f3f82612eae565b8060005b83811015612f7757612f5482612f01565b612f5e8782612eb8565b9650612f6983612f14565b925050600181019050612f43565b505050505050565b6000610140820190508181036000830152612f9a818b612e14565b9050612fa9602083018a611a47565b612fb66040830189612f21565b612fc36080830188612f21565b612fd060c0830187611a47565b612fdd60e0830186611b69565b612feb610100830185611b69565b818103610120830152612ffe8184611b94565b90509998505050505050505050565b60006040820190506130226000830185611a47565b61302f6020830184611a47565b939250505056fea2646970667358221220dc4d5952cff4372a844a0b5c95d474e26f7e69b4b69b4ee942e143589c1242ec64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Reputation.json b/frontend/contractArtifacts/Reputation.json new file mode 100644 index 0000000..c1d61e2 --- /dev/null +++ b/frontend/contractArtifacts/Reputation.json @@ -0,0 +1,460 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Reputation", + "sourceName": "contracts/core/Reputation.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "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": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "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": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "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": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "forwardAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DAO", + "name": "dao_", + "type": "address" + } + ], + "name": "registerDAO", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "spendAllowance", + "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": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f52657075746174696f6e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f524550000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000324565b508060049081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b6117d3806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638ce516da11610097578063dd62ed3e11610066578063dd62ed3e146102ad578063dd8aaa4f146102dd578063e1f21c67146102f9578063fe0d695a1461031557610100565b80638ce516da1461022757806395d89b41146102435780639dc29fac14610261578063a9059cbb1461027d57610100565b8063313ce567116100d3578063313ce567146101a157806340c10f19146101bf5780635ffc7004146101db57806370a08231146101f757610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610331565b60405161011a91906110c2565b60405180910390f35b61013d6004803603810190610138919061117d565b6103c3565b60405161014a91906111d8565b60405180910390f35b61015b6103e6565b6040516101689190611202565b60405180910390f35b61018b6004803603810190610186919061121d565b6103f0565b60405161019891906111d8565b60405180910390f35b6101a961042d565b6040516101b6919061128c565b60405180910390f35b6101d960048036038101906101d4919061117d565b610436565b005b6101f560048036038101906101f0919061121d565b6104d4565b005b610211600480360381019061020c91906112a7565b610593565b60405161021e9190611202565b60405180910390f35b610241600480360381019061023c919061121d565b6105db565b005b61024b61067b565b60405161025891906110c2565b60405180910390f35b61027b6004803603810190610276919061117d565b61070d565b005b6102976004803603810190610292919061117d565b6107ab565b6040516102a491906111d8565b60405180910390f35b6102c760048036038101906102c291906112d4565b6107e8565b6040516102d49190611202565b60405180910390f35b6102f760048036038101906102f2919061121d565b61086f565b005b610313600480360381019061030e919061121d565b61090f565b005b61032f600480360381019061032a9190611352565b6109af565b005b606060038054610340906113ae565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906113ae565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b5050505050905090565b6000806103ce610a84565b90506103db818585610a8c565b600191505092915050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104249061142b565b60405180910390fd5b60006009905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611497565b60405180910390fd5b6104d08282610a9e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611529565b60405180910390fd5b61056f833383610b20565b61058e83838361057f87876107e8565b6105899190611578565b610a8c565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061161e565b60405180910390fd5b610676838383610bb4565b505050565b60606004805461068a906113ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106b6906113ae565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061168a565b60405180910390fd5b6107a78282610dd9565b5050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061142b565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611529565b60405180910390fd5b61090a838383610b20565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109969061161e565b60405180910390fd5b6109aa838383610a8c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a379061171c565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610a998383836001610e5b565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b105760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b07919061174b565b60405180910390fd5b610b1c60008383610bb4565b5050565b6000610b2c84846107e8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bae5781811015610b9e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b9593929190611766565b60405180910390fd5b610bad84848484036000610e5b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c06578060026000828254610bfa9190611578565b92505081905550610cd9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c92578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c8993929190611766565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d225780600260008282540392505081905550610d6f565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dcc9190611202565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e42919061174b565b60405180910390fd5b610e5782600083610bb4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ecd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ec4919061174b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f36919061174b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561102c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190611202565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561106c578082015181840152602081019050611051565b60008484015250505050565b6000601f19601f8301169050919050565b600061109482611032565b61109e818561103d565b93506110ae81856020860161104e565b6110b781611078565b840191505092915050565b600060208201905081810360008301526110dc8184611089565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611114826110e9565b9050919050565b61112481611109565b811461112f57600080fd5b50565b6000813590506111418161111b565b92915050565b6000819050919050565b61115a81611147565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b60008060408385031215611194576111936110e4565b5b60006111a285828601611132565b92505060206111b385828601611168565b9150509250929050565b60008115159050919050565b6111d2816111bd565b82525050565b60006020820190506111ed60008301846111c9565b92915050565b6111fc81611147565b82525050565b600060208201905061121760008301846111f3565b92915050565b600080600060608486031215611236576112356110e4565b5b600061124486828701611132565b935050602061125586828701611132565b925050604061126686828701611168565b9150509250925092565b600060ff82169050919050565b61128681611270565b82525050565b60006020820190506112a1600083018461127d565b92915050565b6000602082840312156112bd576112bc6110e4565b5b60006112cb84828501611132565b91505092915050565b600080604083850312156112eb576112ea6110e4565b5b60006112f985828601611132565b925050602061130a85828601611132565b9150509250929050565b600061131f82611109565b9050919050565b61132f81611314565b811461133a57600080fd5b50565b60008135905061134c81611326565b92915050565b600060208284031215611368576113676110e4565b5b60006113768482850161133d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113c657607f821691505b6020821081036113d9576113d861137f565b5b50919050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000611415601b8361103d565b9150611420826113df565b602082019050919050565b6000602082019050818103600083015261144481611408565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206d696e7400600082015250565b6000611481601f8361103d565b915061148c8261144b565b602082019050919050565b600060208201905081810360008301526114b081611474565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c207370656e6460008201527f416c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b600061151360298361103d565b915061151e826114b7565b604082019050919050565b6000602082019050818103600083015261154281611506565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061158382611147565b915061158e83611147565b92508282019050808211156115a6576115a5611549565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20757064617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061160860218361103d565b9150611613826115ac565b604082019050919050565b60006020820190508181036000830152611637816115fb565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206275726e00600082015250565b6000611674601f8361103d565b915061167f8261163e565b602082019050919050565b600060208201905081810360008301526116a381611667565b9050919050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061170660218361103d565b9150611711826116aa565b604082019050919050565b60006020820190508181036000830152611735816116f9565b9050919050565b61174581611109565b82525050565b6000602082019050611760600083018461173c565b92915050565b600060608201905061177b600083018661173c565b61178860208301856111f3565b61179560408301846111f3565b94935050505056fea26469706673582212209d2337a244f6f556d6c9ea9c1ad6e882de0264fa072aff6b83de3a8a2b9217c464736f6c63430008180033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638ce516da11610097578063dd62ed3e11610066578063dd62ed3e146102ad578063dd8aaa4f146102dd578063e1f21c67146102f9578063fe0d695a1461031557610100565b80638ce516da1461022757806395d89b41146102435780639dc29fac14610261578063a9059cbb1461027d57610100565b8063313ce567116100d3578063313ce567146101a157806340c10f19146101bf5780635ffc7004146101db57806370a08231146101f757610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610331565b60405161011a91906110c2565b60405180910390f35b61013d6004803603810190610138919061117d565b6103c3565b60405161014a91906111d8565b60405180910390f35b61015b6103e6565b6040516101689190611202565b60405180910390f35b61018b6004803603810190610186919061121d565b6103f0565b60405161019891906111d8565b60405180910390f35b6101a961042d565b6040516101b6919061128c565b60405180910390f35b6101d960048036038101906101d4919061117d565b610436565b005b6101f560048036038101906101f0919061121d565b6104d4565b005b610211600480360381019061020c91906112a7565b610593565b60405161021e9190611202565b60405180910390f35b610241600480360381019061023c919061121d565b6105db565b005b61024b61067b565b60405161025891906110c2565b60405180910390f35b61027b6004803603810190610276919061117d565b61070d565b005b6102976004803603810190610292919061117d565b6107ab565b6040516102a491906111d8565b60405180910390f35b6102c760048036038101906102c291906112d4565b6107e8565b6040516102d49190611202565b60405180910390f35b6102f760048036038101906102f2919061121d565b61086f565b005b610313600480360381019061030e919061121d565b61090f565b005b61032f600480360381019061032a9190611352565b6109af565b005b606060038054610340906113ae565b80601f016020809104026020016040519081016040528092919081815260200182805461036c906113ae565b80156103b95780601f1061038e576101008083540402835291602001916103b9565b820191906000526020600020905b81548152906001019060200180831161039c57829003601f168201915b5050505050905090565b6000806103ce610a84565b90506103db818585610a8c565b600191505092915050565b6000600254905090565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104249061142b565b60405180910390fd5b60006009905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90611497565b60405180910390fd5b6104d08282610a9e565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90611529565b60405180910390fd5b61056f833383610b20565b61058e83838361057f87876107e8565b6105899190611578565b610a8c565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061161e565b60405180910390fd5b610676838383610bb4565b505050565b60606004805461068a906113ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106b6906113ae565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107949061168a565b60405180910390fd5b6107a78282610dd9565b5050565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df9061142b565b60405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f690611529565b60405180910390fd5b61090a838383610b20565b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109969061161e565b60405180910390fd5b6109aa838383610a8c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a379061171c565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610a998383836001610e5b565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b105760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610b07919061174b565b60405180910390fd5b610b1c60008383610bb4565b5050565b6000610b2c84846107e8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610bae5781811015610b9e578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610b9593929190611766565b60405180910390fd5b610bad84848484036000610e5b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c06578060026000828254610bfa9190611578565b92505081905550610cd9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c92578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c8993929190611766565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d225780600260008282540392505081905550610d6f565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dcc9190611202565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e42919061174b565b60405180910390fd5b610e5782600083610bb4565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ecd5760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610ec4919061174b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3f5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610f36919061174b565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561102c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110239190611202565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561106c578082015181840152602081019050611051565b60008484015250505050565b6000601f19601f8301169050919050565b600061109482611032565b61109e818561103d565b93506110ae81856020860161104e565b6110b781611078565b840191505092915050565b600060208201905081810360008301526110dc8184611089565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611114826110e9565b9050919050565b61112481611109565b811461112f57600080fd5b50565b6000813590506111418161111b565b92915050565b6000819050919050565b61115a81611147565b811461116557600080fd5b50565b60008135905061117781611151565b92915050565b60008060408385031215611194576111936110e4565b5b60006111a285828601611132565b92505060206111b385828601611168565b9150509250929050565b60008115159050919050565b6111d2816111bd565b82525050565b60006020820190506111ed60008301846111c9565b92915050565b6111fc81611147565b82525050565b600060208201905061121760008301846111f3565b92915050565b600080600060608486031215611236576112356110e4565b5b600061124486828701611132565b935050602061125586828701611132565b925050604061126686828701611168565b9150509250925092565b600060ff82169050919050565b61128681611270565b82525050565b60006020820190506112a1600083018461127d565b92915050565b6000602082840312156112bd576112bc6110e4565b5b60006112cb84828501611132565b91505092915050565b600080604083850312156112eb576112ea6110e4565b5b60006112f985828601611132565b925050602061130a85828601611132565b9150509250929050565b600061131f82611109565b9050919050565b61132f81611314565b811461133a57600080fd5b50565b60008135905061134c81611326565b92915050565b600060208284031215611368576113676110e4565b5b60006113768482850161133d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113c657607f821691505b6020821081036113d9576113d861137f565b5b50919050565b7f524550207472616e73666572206973206e6f7420616c6c6f7765640000000000600082015250565b6000611415601b8361103d565b9150611420826113df565b602082019050919050565b6000602082019050818103600083015261144481611408565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206d696e7400600082015250565b6000611481601f8361103d565b915061148c8261144b565b602082019050919050565b600060208201905081810360008301526114b081611474565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c207370656e6460008201527f416c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b600061151360298361103d565b915061151e826114b7565b604082019050919050565b6000602082019050818103600083015261154281611506565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061158382611147565b915061158e83611147565b92508282019050808211156115a6576115a5611549565b5b92915050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c20757064617460008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061160860218361103d565b9150611613826115ac565b604082019050919050565b60006020820190508181036000830152611637816115fb565b9050919050565b7f4f6e6c792044414f20636f6e7472616374206d61792063616c6c206275726e00600082015250565b6000611674601f8361103d565b915061167f8261163e565b602082019050919050565b600060208201905081810360008301526116a381611667565b9050919050565b7f412044414f2068617320616c7265616479206265656e2072656769737465726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b600061170660218361103d565b9150611711826116aa565b604082019050919050565b60006020820190508181036000830152611735816116f9565b9050919050565b61174581611109565b82525050565b6000602082019050611760600083018461173c565b92915050565b600060608201905061177b600083018661173c565b61178860208301856111f3565b61179560408301846111f3565b94935050505056fea26469706673582212209d2337a244f6f556d6c9ea9c1ad6e882de0264fa072aff6b83de3a8a2b9217c464736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/frontend/contractArtifacts/Rollup.json b/frontend/contractArtifacts/Rollup.json index 0b51bcb..fe66e33 100644 --- a/frontend/contractArtifacts/Rollup.json +++ b/frontend/contractArtifacts/Rollup.json @@ -168,8 +168,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001d8a38038062001d8a8339818101604052810190620000379190620000f4565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505062000126565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a8826200007b565b9050919050565b6000620000bc826200009b565b9050919050565b620000ce81620000af565b8114620000da57600080fd5b50565b600081519050620000ee81620000c3565b92915050565b6000602082840312156200010d576200010c62000076565b5b60006200011d84828501620000dd565b91505092915050565b608051611c3362000157600039600081816101720152818161065b0152818161074401526108860152611c336000f3fe6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212207017c338b02f376e8792508d04f7abd2d83ca2d317d9c45d024fd44a5e249bb864736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212207017c338b02f376e8792508d04f7abd2d83ca2d317d9c45d024fd44a5e249bb864736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162001d8a38038062001d8a8339818101604052810190620000379190620000f4565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050505062000126565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000a8826200007b565b9050919050565b6000620000bc826200009b565b9050919050565b620000ce81620000af565b8114620000da57600080fd5b50565b600081519050620000ee81620000c3565b92915050565b6000602082840312156200010d576200010c62000076565b5b60006200011d84828501620000dd565b91505092915050565b608051611c3362000157600039600081816101720152818161065b0152818161074401526108860152611c336000f3fe6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212204e268e6eb9895e3dc7c6b36750574fa3c0860c85b9b8004fa2c9c20730dfdbf964736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c8063216ed6ad1461005a578063b5b20c0014610083578063c4a9e116146100ac578063d5a44f86146100d7578063da553ec214610117578063f85c5a8a14610154575b600080fd5b34801561006657600080fd5b50610081600480360381019061007c9190610de8565b610170565b005b34801561008f57600080fd5b506100aa60048036038101906100a59190610e3b565b610310565b005b3480156100b857600080fd5b506100c1610484565b6040516100ce9190610e8a565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f99190610ea5565b61048a565b60405161010e9493929190610efc565b60405180910390f35b34801561012357600080fd5b5061013e60048036038101906101399190610fa6565b6104e7565b60405161014b9190610e8a565b60405180910390f35b61016e6004803603810190610169919061101a565b610af5565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f590611111565b60405180910390fd5b60008211610241576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102389061117d565b60405180910390fd5b600060016000815480929190610256906111cc565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426102ca9190611214565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516103019190610e8a565b60405180910390a15050505050565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906112ba565b60405180910390fd5b8060030160009054906101000a900460ff161561040a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104019061134c565b60405180910390fd5b806002015442111561042f5781426104229190611214565b8160020181905550610448565b81816002015461043f9190611214565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9836040516104779190610e8a565b60405180910390a1505050565b60015481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b600060035483111561052e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610525906113b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061144a565b60405180910390fd5b5b600080600090505b600354811015610658576002600082815260200190815260200160002060020154826106499190611214565b9150808060010191505061061d565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c7382888887604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518a63ffffffff1660e01b81526004016106f09897969594939291906115de565b60206040518083038185885af115801561070e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906107339190611681565b915060005b60035481101561082d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3846002600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008681526020019081526020016000206001015460016040518563ffffffff1660e01b81526004016107ee94939291906116ae565b600060405180830381600087803b15801561080857600080fd5b505af115801561081c573d6000803e3d6000fd5b505050508080600101915050610738565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610950577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b383600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008060055481526020019081526020016000206001015460016040518563ffffffff1660e01b815260040161091d94939291906116ae565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050505b600354841015610a5d5760005b8460035461096b91906116f3565b811015610a43576002600082876109829190611214565b8152602001908152602001600020600260008381526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201816003019081610a32919061196e565b50905050808060010191505061095d565b5083600354610a5291906116f3565b600381905550610a66565b60006003819055505b610a6e610b92565b600581905550600080600554815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050949350505050565b60006002600060036000815480929190610b0e906111cc565b9190505581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508381600101819055503481600201819055508282826003019182610b8a929190611a61565b505050505050565b6000610b9c610bd5565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b600154811015610c595760008082815260200190815260200160002060030160009054906101000a900460ff16610c4c57600080828152602001908152602001600020600201544211610c4c576000808281526020019081526020016000206001015482610c499190611214565b91505b8080600101915050610bdb565b5060008111610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490611b7d565b60405180910390fd5b60008144610cab9190611bcc565b9050600080600090505b600154811015610d435760008082815260200190815260200160002060030160009054906101000a900460ff16610d3657600080828152602001908152602001600020600201544211610d36576000808281526020019081526020016000206001015482610d239190611214565b915082821115610d3557809450610d43565b5b8080600101915050610cb5565b5050505090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d7f82610d54565b9050919050565b610d8f81610d74565b8114610d9a57600080fd5b50565b600081359050610dac81610d86565b92915050565b6000819050919050565b610dc581610db2565b8114610dd057600080fd5b50565b600081359050610de281610dbc565b92915050565b600080600060608486031215610e0157610e00610d4a565b5b6000610e0f86828701610d9d565b9350506020610e2086828701610dd3565b9250506040610e3186828701610dd3565b9150509250925092565b60008060408385031215610e5257610e51610d4a565b5b6000610e6085828601610dd3565b9250506020610e7185828601610dd3565b9150509250929050565b610e8481610db2565b82525050565b6000602082019050610e9f6000830184610e7b565b92915050565b600060208284031215610ebb57610eba610d4a565b5b6000610ec984828501610dd3565b91505092915050565b610edb81610d74565b82525050565b60008115159050919050565b610ef681610ee1565b82525050565b6000608082019050610f116000830187610ed2565b610f1e6020830186610e7b565b610f2b6040830185610e7b565b610f386060830184610eed565b95945050505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610f6657610f65610f41565b5b8235905067ffffffffffffffff811115610f8357610f82610f46565b5b602083019150836001820283011115610f9f57610f9e610f4b565b5b9250929050565b60008060008060608587031215610fc057610fbf610d4a565b5b600085013567ffffffffffffffff811115610fde57610fdd610d4f565b5b610fea87828801610f50565b94509450506020610ffd87828801610dd3565b925050604061100e87828801610dd3565b91505092959194509250565b6000806000806060858703121561103457611033610d4a565b5b600061104287828801610d9d565b945050602061105387828801610dd3565b935050604085013567ffffffffffffffff81111561107457611073610d4f565b5b61108087828801610f50565b925092505092959194509250565b600082825260208201905092915050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b60006110fb60368361108e565b91506111068261109f565b604082019050919050565b6000602082019050818103600083015261112a816110ee565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b600061116760118361108e565b915061117282611131565b602082019050919050565b600060208201905081810360008301526111968161115a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111d782610db2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036112095761120861119d565b5b600182019050919050565b600061121f82610db2565b915061122a83610db2565b92508282019050808211156112425761124161119d565b5b92915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006112a460338361108e565b91506112af82611248565b604082019050919050565b600060208201905081810360008301526112d381611297565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061133660248361108e565b9150611341826112da565b604082019050919050565b6000602082019050818103600083015261136581611329565b9050919050565b7f42617463682073697a6520746f6f206c61726765000000000000000000000000600082015250565b60006113a260148361108e565b91506113ad8261136c565b602082019050919050565b600060208201905081810360008301526113d181611395565b9050919050565b7f426174636820726573756c74206d757374206265207375626d6974746564206260008201527f792063757272656e7420626174636820776f726b657200000000000000000000602082015250565b600061143460368361108e565b915061143f826113d8565b604082019050919050565b6000602082019050818103600083015261146381611427565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611496838561108e565b93506114a383858461146a565b6114ac83611479565b840190509392505050565b600060029050919050565b600081905092915050565b6000819050919050565b6114e081610db2565b82525050565b60006114f283836114d7565b60208301905092915050565b6000602082019050919050565b611514816114b7565b61151e81846114c2565b9250611529826114cd565b8060005b8381101561155a57815161154187826114e6565b965061154c836114fe565b92505060018101905061152d565b505050505050565b6000819050919050565b6000819050919050565b600061159161158c61158784611562565b61156c565b610db2565b9050919050565b6115a181611576565b82525050565b600082825260208201905092915050565b50565b60006115c86000836115a7565b91506115d3826115b8565b600082019050919050565b60006101408201905081810360008301526115fa818a8c61148a565b90506116096020830189610e7b565b611616604083018861150b565b611623608083018761150b565b61163060c0830186611598565b61163d60e0830185610eed565b61164b610100830184610eed565b81810361012083015261165d816115bb565b90509998505050505050505050565b60008151905061167b81610dbc565b92915050565b60006020828403121561169757611696610d4a565b5b60006116a58482850161166c565b91505092915050565b60006080820190506116c36000830187610e7b565b6116d06020830186610ed2565b6116dd6040830185610e7b565b6116ea6060830184610eed565b95945050505050565b60006116fe82610db2565b915061170983610db2565b92508282039050818111156117215761172061119d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061176e57607f821691505b60208210810361178157611780611727565b5b50919050565b60008154905061179681611756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261182e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826117f1565b61183886836117f1565b95508019841693508086168417925050509392505050565b600061186b61186661186184610db2565b61156c565b610db2565b9050919050565b6000819050919050565b61188583611850565b61189961189182611872565b8484546117fe565b825550505050565b600090565b6118ae6118a1565b6118b981848461187c565b505050565b5b818110156118dd576118d26000826118a6565b6001810190506118bf565b5050565b601f821115611922576118f3816117cc565b6118fc846117e1565b8101602085101561190b578190505b61191f611917856117e1565b8301826118be565b50505b505050565b600082821c905092915050565b600061194560001984600802611927565b1980831691505092915050565b600061195e8383611934565b9150826002028217905092915050565b81810361197c575050611a54565b61198582611787565b67ffffffffffffffff81111561199e5761199d61179d565b5b6119a88254611756565b6119b38282856118e1565b6000601f8311600181146119e257600084156119d0578287015490505b6119da8582611952565b865550611a4d565b601f1984166119f0876117cc565b96506119fb866117cc565b60005b82811015611a23578489015482556001820191506001850194506020810190506119fe565b86831015611a405784890154611a3c601f891682611934565b8355505b6001600288020188555050505b5050505050505b565b600082905092915050565b611a6b8383611a56565b67ffffffffffffffff811115611a8457611a8361179d565b5b611a8e8254611756565b611a998282856118e1565b6000601f831160018114611ac85760008415611ab6578287013590505b611ac08582611952565b865550611b28565b601f198416611ad6866117cc565b60005b82811015611afe57848901358255600182019150602085019450602081019050611ad9565b86831015611b1b5784890135611b17601f891682611934565b8355505b6001600288020188555050505b50505050505050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000611b67601a8361108e565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611bd782610db2565b9150611be283610db2565b925082611bf257611bf1611b9d565b5b82820690509291505056fea26469706673582212204e268e6eb9895e3dc7c6b36750574fa3c0860c85b9b8004fa2c9c20730dfdbf964736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Work1.json b/frontend/contractArtifacts/Work1.json index 42ae641..eba518b 100644 --- a/frontend/contractArtifacts/Work1.json +++ b/frontend/contractArtifacts/Work1.json @@ -439,8 +439,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002ee638038062002ee68339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b608051612c95620002516000396000818161049401528181610a0101528181610ad10152610bb30152612c956000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea264697066735822122091815ccc7a3eb2ebe2d9f1c1c980ef380333ad7f96a931bea6ce315e05414bd764736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea264697066735822122091815ccc7a3eb2ebe2d9f1c1c980ef380333ad7f96a931bea6ce315e05414bd764736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002ee638038062002ee68339818101604052810190620000379190620001c4565b82828282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000220565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000f882620000cb565b9050919050565b60006200010c82620000eb565b9050919050565b6200011e81620000ff565b81146200012a57600080fd5b50565b6000815190506200013e8162000113565b92915050565b60006200015182620000eb565b9050919050565b620001638162000144565b81146200016f57600080fd5b50565b600081519050620001838162000158565b92915050565b6000819050919050565b6200019e8162000189565b8114620001aa57600080fd5b50565b600081519050620001be8162000193565b92915050565b600080600060608486031215620001e057620001df620000c6565b5b6000620001f0868287016200012d565b9350506020620002038682870162000172565b92505060406200021686828701620001ad565b9150509250925092565b608051612c95620002516000396000818161049401528181610a0101528181610ad10152610bb30152612c956000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea26469706673582212209c4da0e32e0f75130c369f5a20475dff14ed8ff146681a2e10c58d3e82b121ba64736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611452565b610368565b005b34801561010a57600080fd5b5061012560048036038101906101209190611533565b610492565b005b34801561013357600080fd5b5061013c610632565b6040516101499190611595565b60405180910390f35b34801561015e57600080fd5b5061017960048036038101906101749190611606565b610638565b6040516101869190611595565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b1919061167a565b6106b7565b6040516101c997969594939291906117d8565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611881565b610843565b005b610215600480360381019061021091906118e3565b610c73565b005b34801561022357600080fd5b5061022c610dbc565b6040516102399190611595565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190611957565b610dc2565b005b34801561027757600080fd5b50610280610f36565b60405161028d9190611595565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b8919061167a565b610f3c565b6040516102cb929190611997565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a16565b610f60565b005b34801561030957600080fd5b50610324600480360381019061031f919061167a565b611198565b6040516103349493929190611aab565b60405180910390f35b34801561034957600080fd5b506103526111f5565b60405161035f9190611595565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b3c565b60405180910390fd5b6000600760008154809291906103c290611b8b565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111fb565b8160030181905550838382600401918261044e929190611e19565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b4828260030154604051610484929190611997565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f5b565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fc7565b60405180910390fd5b60006001600081548092919061057890611b8b565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fe7565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e9826040516106239190611595565b60405180910390a15050505050565b60075481565b600080838381019061064a919061167a565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a1929190611997565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c3c565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c3c565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c3c565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c3c565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116b6565b5b8160020160009054906101000a900460ff166003811115610892576108916116b6565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c990612067565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116b6565b5b0217905550828260070160006101000a81548160ff0219169083151502179055506000600167ffffffffffffffff81111561095257610951611bde565b5b60405190808252806020026020018201604052801561098b57816020015b6109786113b3565b8152602001906001900390816109705790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250816000815181106109f4576109f3612087565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a6293929190612424565b600060405180830381600087803b158015610a7c57600080fd5b505af1158015610a90573d6000803e3d6000fd5b505050507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc8585604051610ac5929190612470565b60405180910390a160007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639fbe7c738560010154866005016014604051806040016040528060018152602001600381525060405180604001604052806001815260200160028152506064600160006040518963ffffffff1660e01b8152600401610b6c97969594939291906125a7565b60206040518083038185885af1158015610b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610baf9190612648565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663975762b3828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015460016040518563ffffffff1660e01b8152600401610c399493929190612675565b600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c8890611b8b565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610d039190611595565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d32959493929190612753565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d759190612648565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610dac9190611595565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e619061281a565b60405180910390fd5b8060030160009054906101000a900460ff1615610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb3906128ac565b60405180910390fd5b8060020154421115610ee1578142610ed49190611fe7565b8160020181905550610efa565b818160020154610ef19190611fe7565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f299190611595565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8b57610f8a6116b6565b5b8160020160009054906101000a900460ff166003811115610faf57610fae6116b6565b5b14610fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe690612918565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611092906129aa565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110c3576110c26116b6565b5b021790555085858360050191826110db929190611e19565b5060005b84849050811015611157578260060185858381811061110157611100612087565b5b905060200281019061111391906129d9565b908060018154018082558091505060019003906000526020600020906002020160009091909190915081816111489190612b85565b505080806001019150506110df565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc876040516111879190611595565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b600061120561123e565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112c25760008082815260200190815260200160002060030160009054906101000a900460ff166112b5576000808281526020019081526020016000206002015442116112b55760008082815260200190815260200160002060010154826112b29190611fe7565b91505b8080600101915050611244565b5060008111611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612bdf565b60405180910390fd5b600081446113149190612c2e565b9050600080600090505b6001548110156113ac5760008082815260200190815260200160002060030160009054906101000a900460ff1661139f5760008082815260200190815260200160002060020154421161139f57600080828152602001908152602001600020600101548261138c9190611fe7565b91508282111561139e578094506113ac565b5b808060010191505061131e565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611412576114116113ed565b5b8235905067ffffffffffffffff81111561142f5761142e6113f2565b5b60208301915083600182028301111561144b5761144a6113f7565b5b9250929050565b60008060208385031215611469576114686113e3565b5b600083013567ffffffffffffffff811115611487576114866113e8565b5b611493858286016113fc565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114ca8261149f565b9050919050565b6114da816114bf565b81146114e557600080fd5b50565b6000813590506114f7816114d1565b92915050565b6000819050919050565b611510816114fd565b811461151b57600080fd5b50565b60008135905061152d81611507565b92915050565b60008060006060848603121561154c5761154b6113e3565b5b600061155a868287016114e8565b935050602061156b8682870161151e565b925050604061157c8682870161151e565b9150509250925092565b61158f816114fd565b82525050565b60006020820190506115aa6000830184611586565b92915050565b60008083601f8401126115c6576115c56113ed565b5b8235905067ffffffffffffffff8111156115e3576115e26113f2565b5b6020830191508360018202830111156115ff576115fe6113f7565b5b9250929050565b600080600080606085870312156116205761161f6113e3565b5b600061162e8782880161151e565b945050602061163f8782880161151e565b935050604085013567ffffffffffffffff8111156116605761165f6113e8565b5b61166c878288016115b0565b925092505092959194509250565b6000602082840312156116905761168f6113e3565b5b600061169e8482850161151e565b91505092915050565b6116b0816114bf565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116f6576116f56116b6565b5b50565b6000819050611707826116e5565b919050565b6000611717826116f9565b9050919050565b6117278161170c565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561176757808201518184015260208101905061174c565b60008484015250505050565b6000601f19601f8301169050919050565b600061178f8261172d565b6117998185611738565b93506117a9818560208601611749565b6117b281611773565b840191505092915050565b60008115159050919050565b6117d2816117bd565b82525050565b600060e0820190506117ed600083018a6116a7565b6117fa6020830189611586565b611807604083018861171e565b6118146060830187611586565b81810360808301526118268186611784565b905081810360a083015261183a8185611784565b905061184960c08301846117c9565b98975050505050505050565b61185e816117bd565b811461186957600080fd5b50565b60008135905061187b81611855565b92915050565b60008060408385031215611898576118976113e3565b5b60006118a68582860161151e565b92505060206118b78582860161186c565b9150509250929050565b6000819050826020600302820111156118dd576118dc6113f7565b5b92915050565b60008060008060a085870312156118fd576118fc6113e3565b5b600061190b8782880161151e565b945050602085013567ffffffffffffffff81111561192c5761192b6113e8565b5b611938878288016113fc565b9350935050604061194b878288016118c1565b91505092959194509250565b6000806040838503121561196e5761196d6113e3565b5b600061197c8582860161151e565b925050602061198d8582860161151e565b9150509250929050565b60006040820190506119ac6000830185611586565b6119b96020830184611586565b9392505050565b60008083601f8401126119d6576119d56113ed565b5b8235905067ffffffffffffffff8111156119f3576119f26113f2565b5b602083019150836020820283011115611a0f57611a0e6113f7565b5b9250929050565b600080600080600060608688031215611a3257611a316113e3565b5b6000611a408882890161151e565b955050602086013567ffffffffffffffff811115611a6157611a606113e8565b5b611a6d888289016113fc565b9450945050604086013567ffffffffffffffff811115611a9057611a8f6113e8565b5b611a9c888289016119c0565b92509250509295509295909350565b6000608082019050611ac060008301876116a7565b611acd6020830186611586565b611ada6040830185611586565b611ae760608301846117c9565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b26601083611738565b9150611b3182611af0565b602082019050919050565b60006020820190508181036000830152611b5581611b19565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b96826114fd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bc857611bc7611b5c565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c5457607f821691505b602082108103611c6757611c66611c0d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611ccf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c92565b611cd98683611c92565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d16611d11611d0c846114fd565b611cf1565b6114fd565b9050919050565b6000819050919050565b611d3083611cfb565b611d44611d3c82611d1d565b848454611c9f565b825550505050565b600090565b611d59611d4c565b611d64818484611d27565b505050565b5b81811015611d8857611d7d600082611d51565b600181019050611d6a565b5050565b601f821115611dcd57611d9e81611c6d565b611da784611c82565b81016020851015611db6578190505b611dca611dc285611c82565b830182611d69565b50505b505050565b600082821c905092915050565b6000611df060001984600802611dd2565b1980831691505092915050565b6000611e098383611ddf565b9150826002028217905092915050565b611e238383611bd3565b67ffffffffffffffff811115611e3c57611e3b611bde565b5b611e468254611c3c565b611e51828285611d8c565b6000601f831160018114611e805760008415611e6e578287013590505b611e788582611dfd565b865550611ee0565b601f198416611e8e86611c6d565b60005b82811015611eb657848901358255600182019150602085019450602081019050611e91565b86831015611ed35784890135611ecf601f891682611ddf565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f45603683611738565b9150611f5082611ee9565b604082019050919050565b60006020820190508181036000830152611f7481611f38565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fb1601183611738565b9150611fbc82611f7b565b602082019050919050565b60006020820190508181036000830152611fe081611fa4565b9050919050565b6000611ff2826114fd565b9150611ffd836114fd565b925082820190508082111561201557612014611b5c565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b6000612051602083611738565b915061205c8261201b565b602082019050919050565b6000602082019050818103600083015261208081612044565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6120eb816114fd565b82525050565b6120fa816114bf565b82525050565b60408201600082015161211660008501826120e2565b50602082015161212960208501826120f1565b50505050565b600061213b8383612100565b60408301905092915050565b6000602082019050919050565b600061215f826120b6565b61216981856120c1565b9350612174836120d2565b8060005b838110156121a557815161218c888261212f565b975061219783612147565b925050600181019050612178565b5085935050505092915050565b600081546121bf81611c3c565b6121c98186611738565b945060018216600081146121e457600181146121fa5761222d565b60ff19831686528115156020028601935061222d565b61220385611c6d565b60005b8381101561222557815481890152600182019150602081019050612206565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b600061229161228c83612267565b612274565b9050919050565b6000819050919050565b6122ab81612298565b82525050565b600082825260208201905092915050565b600081546122cf81611c3c565b6122d981866122b1565b945060018216600081146122f4576001811461230a5761233d565b60ff19831686528115156020028601935061233d565b61231385611c6d565b60005b8381101561233557815481890152600182019150602081019050612316565b808801955050505b50505092915050565b600060408301600080840154905061235d8161227e565b61236a60008701826122a2565b5060018401858303602087015261238183826122c2565b925050819250505092915050565b600061239b8383612346565b905092915050565b6000600282019050919050565b60006123bb82612236565b6123c58185612241565b9350836020820285016123d785612252565b8060005b85811015612412578484038952816123f3858261238f565b94506123fe836123a3565b925060208a019950506001810190506123db565b50829750879550505050505092915050565b6000606082019050818103600083015261243e8186612154565b9050818103602083015261245281856121b2565b9050818103604083015261246681846123b0565b9050949350505050565b60006040820190506124856000830185611586565b61249260208301846117c9565b9392505050565b600060029050919050565b600081905092915050565b6000819050919050565b60006124c583836120e2565b60208301905092915050565b6000602082019050919050565b6124e781612499565b6124f181846124a4565b92506124fc826124af565b8060005b8381101561252d57815161251487826124b9565b965061251f836124d1565b925050600181019050612500565b505050505050565b6000819050919050565b600061255a61255561255084612535565b611cf1565b6114fd565b9050919050565b61256a8161253f565b82525050565b600082825260208201905092915050565b50565b6000612591600083612570565b915061259c82612581565b600082019050919050565b60006101408201905081810360008301526125c2818a6121b2565b90506125d16020830189611586565b6125de60408301886124de565b6125eb60808301876124de565b6125f860c0830186612561565b61260560e08301856117c9565b6126136101008301846117c9565b81810361012083015261262581612584565b905098975050505050505050565b60008151905061264281611507565b92915050565b60006020828403121561265e5761265d6113e3565b5b600061266c84828501612633565b91505092915050565b600060808201905061268a6000830187611586565b61269760208301866116a7565b6126a46040830185611586565b6126b160608301846117c9565b95945050505050565b82818337600083830152505050565b60006126d58385611738565b93506126e28385846126ba565b6126eb83611773565b840190509392505050565b82818337505050565b61270b606083836126f6565b5050565b600081519050919050565b60006127258261270f565b61272f8185612570565b935061273f818560208601611749565b61274881611773565b840191505092915050565b600060c082019050818103600083015261276e8187896126c9565b905061277d60208301866126ff565b61278a60808301856117c9565b81810360a083015261279c818461271a565b90509695505050505050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b6000612804603383611738565b915061280f826127a8565b604082019050919050565b60006020820190508181036000830152612833816127f7565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b6000612896602483611738565b91506128a18261283a565b604082019050919050565b600060208201905081810360008301526128c581612889565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b6000612902601883611738565b915061290d826128cc565b602082019050919050565b60006020820190508181036000830152612931816128f5565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612994603a83611738565b915061299f82612938565b604082019050919050565b600060208201905081810360008301526129c381612987565b9050919050565b600080fd5b600080fd5b600080fd5b6000823560016040038336030381126129f5576129f46129ca565b5b80830191505092915050565b612a0a81612298565b8114612a1557600080fd5b50565b60008135612a2581612a01565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612a6784612a2e565b9350801983169250808416831791505092915050565b6000612a98612a93612a8e84612298565b611cf1565b612298565b9050919050565b6000819050919050565b612ab282612a7d565b612ac5612abe82612a9f565b8354612a3b565b8255505050565b60008083356001602003843603038112612ae957612ae86129ca565b5b80840192508235915067ffffffffffffffff821115612b0b57612b0a6129cf565b5b602083019250600182023603831315612b2757612b266129d4565b5b509250929050565b612b3a838383611e19565b505050565b600081016000830180612b5181612a18565b9050612b5d8184612aa9565b5050506001810160208301612b728185612acc565b612b7d818386612b2f565b505050505050565b612b8f8282612b3f565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612bc9601a83611738565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c39826114fd565b9150612c44836114fd565b925082612c5457612c53612bff565b5b82820690509291505056fea26469706673582212209c4da0e32e0f75130c369f5a20475dff14ed8ff146681a2e10c58d3e82b121ba64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/contractArtifacts/Work2.json b/frontend/contractArtifacts/Work2.json index cfafb61..4979c61 100644 --- a/frontend/contractArtifacts/Work2.json +++ b/frontend/contractArtifacts/Work2.json @@ -444,8 +444,8 @@ "type": "function" } ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002e2638038062002e26833981810160405281019062000037919062000246565b8383838383838282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050505050505050620002b8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001358262000108565b9050919050565b6000620001498262000128565b9050919050565b6200015b816200013c565b81146200016757600080fd5b50565b6000815190506200017b8162000150565b92915050565b60006200018e8262000128565b9050919050565b620001a08162000181565b8114620001ac57600080fd5b50565b600081519050620001c08162000195565b92915050565b6000620001d38262000128565b9050919050565b620001e581620001c6565b8114620001f157600080fd5b50565b6000815190506200020581620001da565b92915050565b6000819050919050565b62000220816200020b565b81146200022c57600080fd5b50565b600081519050620002408162000215565b92915050565b6000806000806080858703121562000263576200026262000103565b5b600062000273878288016200016a565b94505060206200028687828801620001af565b93505060406200029987828801620001f4565b9250506060620002ac878288016200022f565b91505092959194509250565b60805160a051612b33620002f360003960008181610b300152610ba601526000818161049401528181610a3a0152610acf0152612b336000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220d580ca8e560f4f254ec576a8d83e600ab46458c8c3a82b0276db3f2ff668014664736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220d580ca8e560f4f254ec576a8d83e600ab46458c8c3a82b0276db3f2ff668014664736f6c63430008180033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162002e2638038062002e26833981810160405281019062000037919062000246565b8383838383838282808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050508060038190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050505050505050620002b8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001358262000108565b9050919050565b6000620001498262000128565b9050919050565b6200015b816200013c565b81146200016757600080fd5b50565b6000815190506200017b8162000150565b92915050565b60006200018e8262000128565b9050919050565b620001a08162000181565b8114620001ac57600080fd5b50565b600081519050620001c08162000195565b92915050565b6000620001d38262000128565b9050919050565b620001e581620001c6565b8114620001f157600080fd5b50565b6000815190506200020581620001da565b92915050565b6000819050919050565b62000220816200020b565b81146200022c57600080fd5b50565b600081519050620002408162000215565b92915050565b6000806000806080858703121562000263576200026262000103565b5b600062000273878288016200016a565b94505060206200028687828801620001af565b93505060406200029987828801620001f4565b9250506060620002ac878288016200022f565b91505092959194509250565b60805160a051612b33620002f360003960008181610b300152610ba601526000818161049401528181610a3a0152610acf0152612b336000f3fe6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220bd2f30c070c9e13748396ddbc9f9f88ef2ea029324a3458653b9c7e838803e4864736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100dd5760003560e01c8063a035b1fe1161007f578063cf37625611610059578063cf37625614610296578063d0fae95f146102d4578063d5a44f86146102fd578063d76b67941461033d576100dd565b8063a035b1fe14610217578063b5b20c0014610242578063c4a9e1161461026b576100dd565b8063815a0572116100bb578063815a05721461015257806381d12c581461018f578063854b6a4f146101d257806399ad6c56146101fb576100dd565b80630d0271d6146100e2578063216ed6ad146100fe5780635badbe4c14610127575b600080fd5b6100fc60048036038101906100f79190611449565b610368565b005b34801561010a57600080fd5b506101256004803603810190610120919061152a565b610492565b005b34801561013357600080fd5b5061013c610632565b604051610149919061158c565b60405180910390f35b34801561015e57600080fd5b50610179600480360381019061017491906115fd565b610638565b604051610186919061158c565b60405180910390f35b34801561019b57600080fd5b506101b660048036038101906101b19190611671565b6106b7565b6040516101c997969594939291906117cf565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611878565b610843565b005b610215600480360381019061021091906118da565b610c6a565b005b34801561022357600080fd5b5061022c610db3565b604051610239919061158c565b60405180910390f35b34801561024e57600080fd5b506102696004803603810190610264919061194e565b610db9565b005b34801561027757600080fd5b50610280610f2d565b60405161028d919061158c565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190611671565b610f33565b6040516102cb92919061198e565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190611a0d565b610f57565b005b34801561030957600080fd5b50610324600480360381019061031f9190611671565b61118f565b6040516103349493929190611aa2565b60405180910390f35b34801561034957600080fd5b506103526111ec565b60405161035f919061158c565b60405180910390f35b6003543410156103ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a490611b33565b60405180910390fd5b6000600760008154809291906103c290611b82565b9190505590506000600660008381526020019081526020016000209050338160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503481600101819055506104336111f2565b8160030181905550838382600401918261044e929190611e10565b507fd9e7f38a71691fb1db2da17057c03d381a42a9925350883f10e8e5d0bca4a3b482826003015460405161048492919061198e565b60405180910390a150505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051790611f52565b60405180910390fd5b60008211610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a90611fbe565b60405180910390fd5b60006001600081548092919061057890611b82565b91905055905060008060008381526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083816001018190555082426105ec9190611fde565b81600201819055507fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e982604051610623919061158c565b60405180910390a15050505050565b60075481565b600080838381019061064a9190611671565b9050600060046000838152602001908152602001600020905080600001546003819055507f6a3843c02c26620842ae8496fd3afcb44b27463b3808e2ccdae4bcee5a2e3f20826003546040516106a192919061198e565b60405180910390a1600092505050949350505050565b60066020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff169080600301549080600401805461071f90611c33565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611c33565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050908060050180546107ad90611c33565b80601f01602080910402602001604051908101604052809291908181526020018280546107d990611c33565b80156108265780601f106107fb57610100808354040283529160200191610826565b820191906000526020600020905b81548152906001019060200180831161080957829003601f168201915b5050505050908060070160009054906101000a900460ff16905087565b60006006600084815260200190815260200160002090506001600381111561086e5761086d6116ad565b5b8160020160009054906101000a900460ff166003811115610892576108916116ad565b5b146108d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c99061205e565b60405180910390fd5b600080600083600301548152602001908152602001600020905060028260020160006101000a81548160ff02191690836003811115610914576109136116ad565b5b0217905550828260070160006101000a81548160ff0219169083151502179055507f470d2978e081461f6d144c091dfd83ec06e6011da0b03bd1c0121b7fb71370dc848460405161096692919061207e565b60405180910390a16000600167ffffffffffffffff81111561098b5761098a611bd5565b5b6040519080825280602002602001820160405280156109c457816020015b6109b16113aa565b8152602001906001900390816109a95790505b5090506040518060400160405280620f424081526020018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525081600081518110610a2d57610a2c6120a7565b5b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5b4d8278285600501866006016040518463ffffffff1660e01b8152600401610a9b93929190612444565b600060405180830381600087803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ffc70048360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000085600101546040518463ffffffff1660e01b8152600401610b7293929190612490565b600060405180830381600087803b158015610b8c57600080fd5b505af1158015610ba0573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f85c5a8a84600101548460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168560010154876005016040518563ffffffff1660e01b8152600401610c31939291906124c7565b6000604051808303818588803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b50505050505050505050565b600060056000815480929190610c7f90611b82565b9190505590506000600460008381526020019081526020016000209050858160000181905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cac152a434878787600188604051602001610cfa919061158c565b6040516020818303038152906040526040518763ffffffff1660e01b8152600401610d299594939291906125af565b60206040518083038185885af1158015610d47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d6c9190612619565b81600101819055507f71eae802097e4e77c5345dee7f35d74ac0ae45eb5a456fdaed0de4d141fc5d8c82604051610da3919061158c565b60405180910390a1505050505050565b60035481565b600080600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e58906126b8565b60405180910390fd5b8060030160009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa9061274a565b60405180910390fd5b8060020154421115610ed8578142610ecb9190611fde565b8160020181905550610ef1565b818160020154610ee89190611fde565b81600201819055505b7fa85b1153cd317f9d39e14d8dbfb592ffb46123e9fc61b21b3f70d7d90a81a7e983604051610f20919061158c565b60405180910390a1505050565b60015481565b60046020528060005260406000206000915090508060000154908060010154905082565b600060066000878152602001908152602001600020905060006003811115610f8257610f816116ad565b5b8160020160009054906101000a900460ff166003811115610fa657610fa56116ad565b5b14610fe6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdd906127b6565b60405180910390fd5b60008060008360030154815260200190815260200160002090503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108990612848565b60405180910390fd5b60018260020160006101000a81548160ff021916908360038111156110ba576110b96116ad565b5b021790555085858360050191826110d2929190611e10565b5060005b8484905081101561114e57826006018585838181106110f8576110f76120a7565b5b905060200281019061110a9190612877565b9080600181540180825580915050600190039060005260206000209060020201600090919091909150818161113f9190612a23565b505080806001019150506110d6565b507ffaecd3b4db089bf25a48306100dd5fb2152e3887c7815b2b221dbb7da2f8e8dc8760405161117e919061158c565b60405180910390a150505050505050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b60055481565b60006111fc611235565b90506000806000838152602001908152602001600020905060018160030160006101000a81548160ff0219169083151502179055505090565b60008060005b6001548110156112b95760008082815260200190815260200160002060030160009054906101000a900460ff166112ac576000808281526020019081526020016000206002015442116112ac5760008082815260200190815260200160002060010154826112a99190611fde565b91505b808060010191505061123b565b50600081116112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612a7d565b60405180910390fd5b6000814461130b9190612acc565b9050600080600090505b6001548110156113a35760008082815260200190815260200160002060030160009054906101000a900460ff16611396576000808281526020019081526020016000206002015442116113965760008082815260200190815260200160002060010154826113839190611fde565b915082821115611395578094506113a3565b5b8080600101915050611315565b5050505090565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112611409576114086113e4565b5b8235905067ffffffffffffffff811115611426576114256113e9565b5b602083019150836001820283011115611442576114416113ee565b5b9250929050565b600080602083850312156114605761145f6113da565b5b600083013567ffffffffffffffff81111561147e5761147d6113df565b5b61148a858286016113f3565b92509250509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114c182611496565b9050919050565b6114d1816114b6565b81146114dc57600080fd5b50565b6000813590506114ee816114c8565b92915050565b6000819050919050565b611507816114f4565b811461151257600080fd5b50565b600081359050611524816114fe565b92915050565b600080600060608486031215611543576115426113da565b5b6000611551868287016114df565b935050602061156286828701611515565b925050604061157386828701611515565b9150509250925092565b611586816114f4565b82525050565b60006020820190506115a1600083018461157d565b92915050565b60008083601f8401126115bd576115bc6113e4565b5b8235905067ffffffffffffffff8111156115da576115d96113e9565b5b6020830191508360018202830111156115f6576115f56113ee565b5b9250929050565b60008060008060608587031215611617576116166113da565b5b600061162587828801611515565b945050602061163687828801611515565b935050604085013567ffffffffffffffff811115611657576116566113df565b5b611663878288016115a7565b925092505092959194509250565b600060208284031215611687576116866113da565b5b600061169584828501611515565b91505092915050565b6116a7816114b6565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116ed576116ec6116ad565b5b50565b60008190506116fe826116dc565b919050565b600061170e826116f0565b9050919050565b61171e81611703565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561175e578082015181840152602081019050611743565b60008484015250505050565b6000601f19601f8301169050919050565b600061178682611724565b611790818561172f565b93506117a0818560208601611740565b6117a98161176a565b840191505092915050565b60008115159050919050565b6117c9816117b4565b82525050565b600060e0820190506117e4600083018a61169e565b6117f1602083018961157d565b6117fe6040830188611715565b61180b606083018761157d565b818103608083015261181d818661177b565b905081810360a0830152611831818561177b565b905061184060c08301846117c0565b98975050505050505050565b611855816117b4565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6113da565b5b600061189d85828601611515565b92505060206118ae85828601611863565b9150509250929050565b6000819050826020600302820111156118d4576118d36113ee565b5b92915050565b60008060008060a085870312156118f4576118f36113da565b5b600061190287828801611515565b945050602085013567ffffffffffffffff811115611923576119226113df565b5b61192f878288016113f3565b93509350506040611942878288016118b8565b91505092959194509250565b60008060408385031215611965576119646113da565b5b600061197385828601611515565b925050602061198485828601611515565b9150509250929050565b60006040820190506119a3600083018561157d565b6119b0602083018461157d565b9392505050565b60008083601f8401126119cd576119cc6113e4565b5b8235905067ffffffffffffffff8111156119ea576119e96113e9565b5b602083019150836020820283011115611a0657611a056113ee565b5b9250929050565b600080600080600060608688031215611a2957611a286113da565b5b6000611a3788828901611515565b955050602086013567ffffffffffffffff811115611a5857611a576113df565b5b611a64888289016113f3565b9450945050604086013567ffffffffffffffff811115611a8757611a866113df565b5b611a93888289016119b7565b92509250509295509295909350565b6000608082019050611ab7600083018761169e565b611ac4602083018661157d565b611ad1604083018561157d565b611ade60608301846117c0565b95945050505050565b7f496e73756666696369656e742066656500000000000000000000000000000000600082015250565b6000611b1d60108361172f565b9150611b2882611ae7565b602082019050919050565b60006020820190508181036000830152611b4c81611b10565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b8d826114f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bbf57611bbe611b53565b5b600182019050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c4b57607f821691505b602082108103611c5e57611c5d611c04565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302611cc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611c89565b611cd08683611c89565b95508019841693508086168417925050509392505050565b6000819050919050565b6000611d0d611d08611d03846114f4565b611ce8565b6114f4565b9050919050565b6000819050919050565b611d2783611cf2565b611d3b611d3382611d14565b848454611c96565b825550505050565b600090565b611d50611d43565b611d5b818484611d1e565b505050565b5b81811015611d7f57611d74600082611d48565b600181019050611d61565b5050565b601f821115611dc457611d9581611c64565b611d9e84611c79565b81016020851015611dad578190505b611dc1611db985611c79565b830182611d60565b50505b505050565b600082821c905092915050565b6000611de760001984600802611dc9565b1980831691505092915050565b6000611e008383611dd6565b9150826002028217905092915050565b611e1a8383611bca565b67ffffffffffffffff811115611e3357611e32611bd5565b5b611e3d8254611c33565b611e48828285611d83565b6000601f831160018114611e775760008415611e65578287013590505b611e6f8582611df4565b865550611ed7565b601f198416611e8586611c64565b60005b82811015611ead57848901358255600182019150602085019450602081019050611e88565b86831015611eca5784890135611ec6601f891682611dd6565b8355505b6001600288020188555050505b50505050505050565b7f616363657074417661696c6162696c697479206d757374206f6e6c792062652060008201527f63616c6c65642062792044414f20636f6e747261637400000000000000000000602082015250565b6000611f3c60368361172f565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b7f4e6f207374616b652070726f7669646564000000000000000000000000000000600082015250565b6000611fa860118361172f565b9150611fb382611f72565b602082019050919050565b60006020820190508181036000830152611fd781611f9b565b9050919050565b6000611fe9826114f4565b9150611ff4836114f4565b925082820190508082111561200c5761200b611b53565b5b92915050565b7f537461747573206d7573742062652045766964656e63655375626d6974746564600082015250565b600061204860208361172f565b915061205382612012565b602082019050919050565b600060208201905081810360008301526120778161203b565b9050919050565b6000604082019050612093600083018561157d565b6120a060208301846117c0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61210b816114f4565b82525050565b61211a816114b6565b82525050565b6040820160008201516121366000850182612102565b5060208201516121496020850182612111565b50505050565b600061215b8383612120565b60408301905092915050565b6000602082019050919050565b600061217f826120d6565b61218981856120e1565b9350612194836120f2565b8060005b838110156121c55781516121ac888261214f565b97506121b783612167565b925050600181019050612198565b5085935050505092915050565b600081546121df81611c33565b6121e9818661172f565b94506001821660008114612204576001811461221a5761224d565b60ff19831686528115156020028601935061224d565b61222385611c64565b60005b8381101561224557815481890152600182019150602081019050612226565b808801955050505b50505092915050565b600081549050919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b60008160001c9050919050565b6000819050919050565b60006122b16122ac83612287565b612294565b9050919050565b6000819050919050565b6122cb816122b8565b82525050565b600082825260208201905092915050565b600081546122ef81611c33565b6122f981866122d1565b94506001821660008114612314576001811461232a5761235d565b60ff19831686528115156020028601935061235d565b61233385611c64565b60005b8381101561235557815481890152600182019150602081019050612336565b808801955050505b50505092915050565b600060408301600080840154905061237d8161229e565b61238a60008701826122c2565b506001840185830360208701526123a183826122e2565b925050819250505092915050565b60006123bb8383612366565b905092915050565b6000600282019050919050565b60006123db82612256565b6123e58185612261565b9350836020820285016123f785612272565b8060005b858110156124325784840389528161241385826123af565b945061241e836123c3565b925060208a019950506001810190506123fb565b50829750879550505050505092915050565b6000606082019050818103600083015261245e8186612174565b9050818103602083015261247281856121d2565b9050818103604083015261248681846123d0565b9050949350505050565b60006060820190506124a5600083018661169e565b6124b2602083018561169e565b6124bf604083018461157d565b949350505050565b60006060820190506124dc600083018661169e565b6124e9602083018561157d565b81810360408301526124fb81846121d2565b9050949350505050565b82818337600083830152505050565b6000612520838561172f565b935061252d838584612505565b6125368361176a565b840190509392505050565b82818337505050565b61255660608383612541565b5050565b600081519050919050565b600082825260208201905092915050565b60006125818261255a565b61258b8185612565565b935061259b818560208601611740565b6125a48161176a565b840191505092915050565b600060c08201905081810360008301526125ca818789612514565b90506125d9602083018661254a565b6125e660808301856117c0565b81810360a08301526125f88184612576565b90509695505050505050565b600081519050612613816114fe565b92915050565b60006020828403121561262f5761262e6113da565b5b600061263d84828501612604565b91505092915050565b7f576f726b65722063616e206f6e6c7920657874656e64207468656972206f776e60008201527f20617661696c6162696c697479207374616b6500000000000000000000000000602082015250565b60006126a260338361172f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f5374616b652068617320616c7265616479206265656e2061737369676e65642060008201527f776f726b00000000000000000000000000000000000000000000000000000000602082015250565b600061273460248361172f565b915061273f826126d8565b604082019050919050565b6000602082019050818103600083015261276381612727565b9050919050565b7f537461747573206d757374206265205265717565737465640000000000000000600082015250565b60006127a060188361172f565b91506127ab8261276a565b602082019050919050565b600060208201905081810360008301526127cf81612793565b9050919050565b7f576f726b65722063616e206f6e6c79207375626d69742065766964656e63652060008201527f666f7220776f726b2074686579206172652061737369676e6564000000000000602082015250565b6000612832603a8361172f565b915061283d826127d6565b604082019050919050565b6000602082019050818103600083015261286181612825565b9050919050565b600080fd5b600080fd5b600080fd5b60008235600160400383360303811261289357612892612868565b5b80830191505092915050565b6128a8816122b8565b81146128b357600080fd5b50565b600081356128c38161289f565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612905846128cc565b9350801983169250808416831791505092915050565b600061293661293161292c846122b8565b611ce8565b6122b8565b9050919050565b6000819050919050565b6129508261291b565b61296361295c8261293d565b83546128d9565b8255505050565b6000808335600160200384360303811261298757612986612868565b5b80840192508235915067ffffffffffffffff8211156129a9576129a861286d565b5b6020830192506001820236038313156129c5576129c4612872565b5b509250929050565b6129d8838383611e10565b505050565b6000810160008301806129ef816128b6565b90506129fb8184612947565b5050506001810160208301612a10818561296a565b612a1b8183866129cd565b505050505050565b612a2d82826129dd565b5050565b7f4e6f20617661696c61626c6520776f726b6572207374616b6573000000000000600082015250565b6000612a67601a8361172f565b9150612a7282612a31565b602082019050919050565b60006020820190508181036000830152612a9681612a5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ad7826114f4565b9150612ae2836114f4565b925082612af257612af1612a9d565b5b82820690509291505056fea2646970667358221220bd2f30c070c9e13748396ddbc9f9f88ef2ea029324a3458653b9c7e838803e4864736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/frontend/src/components/tabs/index.jsx b/frontend/src/components/tabs/index.jsx index 4767b6f..8be84b7 100644 --- a/frontend/src/components/tabs/index.jsx +++ b/frontend/src/components/tabs/index.jsx @@ -211,9 +211,9 @@ function MainTabs() { {validationPools.filter((x) => !!x).map((pool) => ( {pool.id.toString()} - {pool.postId} + {pool.props.postId} {getAddressName(chainId, pool.sender)} - {pool.fee.toString()} + {pool.props.fee.toString()} {pool.params.bindingPercent.toString()} % @@ -222,11 +222,11 @@ function MainTabs() { {`${pool.params.winRatio[0].toString()}/${pool.params.winRatio[1].toString()}`} {pool.params.redistributeLosingStakes.toString()} {pool.params.duration.toString()} - {new Date(Number(pool.endTime) * 1000).toLocaleString()} + {new Date(Number(pool.props.endTime) * 1000).toLocaleString()} {pool.stakeCount.toString()} {pool.status} - {!pool.resolved && reputation > 0 && pool.timeRemaining > 0 && ( + {!pool.props.resolved && reputation > 0 && pool.timeRemaining > 0 && ( <> diff --git a/frontend/src/contexts/MainContextProvider.jsx b/frontend/src/contexts/MainContextProvider.jsx index eee0978..2e5bac0 100644 --- a/frontend/src/contexts/MainContextProvider.jsx +++ b/frontend/src/contexts/MainContextProvider.jsx @@ -93,14 +93,14 @@ function MainContextProvider({ children }) { const fetchValidationPool = useCallback(async (poolIndex) => { const getPoolStatus = (pool) => { - if (pool.resolved) { - return pool.outcome ? 'Accepted' : 'Rejected'; + if (pool.props.resolved) { + return pool.props.outcome ? 'Accepted' : 'Rejected'; } return pool.timeRemaining > 0 ? 'In Progress' : 'Ready to Evaluate'; }; const pool = await DAORef.current.methods.validationPools(poolIndex).call(); pool.id = Number(pool.id); - pool.timeRemaining = new Date(Number(pool.endTime) * 1000) - new Date(); + pool.timeRemaining = new Date(Number(pool.props.endTime) * 1000) - new Date(); pool.status = getPoolStatus(pool); dispatchValidationPool({ type: 'update', item: pool });