dgf-prototype/backend/contractArtifacts/DAO.json

834 lines
86 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "DAO",
"sourceName": "contracts/core/DAO.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract Reputation",
"name": "reputation_",
"type": "address"
},
{
"internalType": "contract Forum",
"name": "forum_",
"type": "address"
},
{
"internalType": "contract Bench",
"name": "bench_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "id",
"type": "string"
}
],
"name": "PostAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "ValidationPoolInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "votePasses",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "quorumMet",
"type": "bool"
}
],
"name": "ValidationPoolResolved",
"type": "event"
},
{
"inputs": [
{
"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": "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": "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": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "delegatedStakeOnValidationPool",
"outputs": [],
"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": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
}
],
"name": "evaluateOutcome",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"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": "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": [
{
"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": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isMember",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "memberCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "members",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"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"
},
{
"inputs": [],
"name": "postCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "postIndex",
"type": "uint256"
}
],
"name": "postIds",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "postId",
"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"
}
],
"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": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "stakeAvailability",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "inFavor",
"type": "bool"
}
],
"name": "stakeOnValidationPool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"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"
},
{
"inputs": [],
"name": "validationPoolCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "poolIndex",
"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": "0x60806040523480156200001157600080fd5b506040516200469e3803806200469e8339818101604052810190620000379190620003bb565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000154919062000482565b600060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b8152600401620001e5919062000482565b600060405180830381600087803b1580156200020057600080fd5b505af115801562000215573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000276919062000482565b600060405180830381600087803b1580156200029157600080fd5b505af1158015620002a6573d6000803e3d6000fd5b505050505050506200049f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002e582620002b8565b9050919050565b6000620002f982620002d8565b9050919050565b6200030b81620002ec565b81146200031757600080fd5b50565b6000815190506200032b8162000300565b92915050565b60006200033e82620002d8565b9050919050565b620003508162000331565b81146200035c57600080fd5b50565b600081519050620003708162000345565b92915050565b60006200038382620002d8565b9050919050565b620003958162000376565b8114620003a157600080fd5b50565b600081519050620003b5816200038a565b92915050565b600080600060608486031215620003d757620003d6620002b3565b5b6000620003e7868287016200031a565b9350506020620003fa868287016200035f565b92505060406200040d86828701620003a4565b9150509250925092565b6000819050919050565b6000620004426200043c6200043684620002b8565b62000417565b620002b8565b9050919050565b6000620004568262000421565b9050919050565b60006200046a8262000449565b9050919050565b6200047c816200045d565b82525050565b600060208201905062000499600083018462000471565b92915050565b6141ef80620004af6000396000f3fe6080604052600436106101cd5760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f146106a6578063e5b4d827146106cf578063f8300fca146106f8578063fcb4888e14610737576101cd565b8063a2336279146105c0578063da66863a14610603578063dc00bbfe14610640578063dd62ed3e14610669576101cd565b80639dc29fac116100d15780639dc29fac146105015780639fbe7c731461052a5780639fd098721461055a578063a230c52414610583576101cd565b806388380274146104725780638ce516da146104af578063975762b3146104d8576101cd565b806340c10f191161016f5780635ffc70041161013e5780635ffc7004146103b8578063642b5bfb146103e157806370a082311461040c57806378e21c6e14610449576101cd565b806340c10f19146102ec57806350cde8ef146103155780635c253c0b146103525780635daf08ca1461037b576101cd565b806318160ddd116101ab57806318160ddd146102655780631d0d37c9146102905780631e57e078146102b95780632d17c062146102c3576101cd565b806311aee380146101d257806317906c2e146101fd57806317c1821714610228575b600080fd5b3480156101de57600080fd5b506101e7610760565b6040516101f49190612052565b60405180910390f35b34801561020957600080fd5b50610212610766565b60405161021f9190612052565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906120ad565b6107fe565b60405161025c91906120f5565b60405180910390f35b34801561027157600080fd5b5061027a6108a5565b6040516102879190612052565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906121ff565b61093c565b005b6102c1610aa2565b005b3480156102cf57600080fd5b506102ea60048036038101906102e591906122ae565b610ba8565b005b3480156102f857600080fd5b50610313600480360381019061030e9190612301565b610c8b565b005b34801561032157600080fd5b5061033c600480360381019061033791906120ad565b610e04565b60405161034991906123d1565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612523565b610eae565b005b34801561038757600080fd5b506103a2600480360381019061039d91906120ad565b610ee8565b6040516103af919061257b565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190612596565b610f1b565b005b3480156103ed57600080fd5b506103f66110e4565b6040516104039190612052565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906125e9565b61117c565b6040516104409190612052565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612616565b611220565b005b34801561047e57600080fd5b5061049960048036038101906104949190612669565b611260565b6040516104a691906120f5565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190612596565b611412565b005b3480156104e457600080fd5b506104ff60048036038101906104fa91906126bc565b61158e565b005b34801561050d57600080fd5b5061052860048036038101906105239190612301565b611650565b005b610544600480360381019061053f919061279b565b6117c9565b6040516105519190612052565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906128ca565b61188e565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906125e9565b611938565b6040516105b791906120f5565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e291906120ad565b611958565b6040516105fa9796959493929190612b70565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190612bf1565b611a2b565b6040516106379190612d2b565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906120ad565b611ad8565b005b34801561067557600080fd5b50610690600480360381019061068b9190612d4d565b611b12565b60405161069d9190612052565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612596565b611bb9565b005b3480156106db57600080fd5b506106f660048036038101906106f19190612e39565b611c4d565b005b34801561070457600080fd5b5061071f600480360381019061071a9190612bf1565b611cee565b60405161072e93929190612eed565b60405180910390f35b34801561074357600080fd5b5061075e600480360381019061075991906125e9565b611da3565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f99190612f40565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b815260040161085b9190612052565b6020604051808303816000875af115801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e9190612f82565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190612f40565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109e55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90613021565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a679695949392919061306e565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610ba45760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610afd91906130f9565b831015610b3f57610b0c6108a5565b610b158361117c565b34610b20919061312d565b610b2a919061319e565b90508084610b3891906131cf565b9350610b4e565b8334610b4b91906130f9565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b94573d6000803e3d6000fd5b5050508080600101915050610aaa565b5050565b81610bb23361117c565b1015610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90613275565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c549493929190613295565b600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a9061334c565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610dce92919061336c565b600060405180830381600087803b158015610de857600080fd5b505af1158015610dfc573d6000803e3d6000fd5b505050505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350cde8ef836040518263ffffffff1660e01b8152600401610e619190612052565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ea79190613405565b9050919050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610edd91906123d1565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433846040518463ffffffff1660e01b8152600401610f789392919061344e565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6784848460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e89896040518363ffffffff1660e01b8152600401611044929190613485565b602060405180830381865afa158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190612f40565b61108f91906131cf565b6040518463ffffffff1660e01b81526004016110ad9392919061344e565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612f40565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016111d8919061257b565b602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190612f40565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81838383604051611253939291906134ae565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6733868660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e338b6040518363ffffffff1660e01b81526004016112fd929190613485565b602060405180830381865afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190612f40565b61134891906131cf565b6040518463ffffffff1660e01b81526004016113669392919061344e565b600060405180830381600087803b15801561138057600080fd5b505af1158015611394573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016113d5939291906134e5565b600060405180830381600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114bb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b81526004016115579392919061344e565b600060405180830381600087803b15801561157157600080fd5b505af1158015611585573d6000803e3d6000fd5b50505050505050565b816115998433611b12565b10156115ac576115a98333611b12565b91505b6115b7833384611bb9565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b81526004016116189493929190613295565b600060405180830381600087803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116f95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613620565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b815260040161179392919061336c565b600060405180830381600087803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b815260040161183b9b9a99989796959493929190613686565b60206040518083038185885af1158015611859573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061187e9190612f40565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b81526004016118f0949392919061377b565b6020604051808303816000875af115801561190f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193391906137dc565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000806000611965611fa0565b61196d611fdd565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016119cc9190612052565b600060405180830381865afa1580156119e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a129190613ac2565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b8152600401611a8a929190613ba0565b600060405180830381865afa158015611aa7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ad09190613cd7565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a81604051611b079190612052565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611b70929190613485565b602060405180830381865afa158015611b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb19190612f40565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b8152600401611c169392919061344e565b600060405180830381600087803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b8152600401611cb49796959493929190614010565b600060405180830381600087803b158015611cce57600080fd5b505af1158015611ce2573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611d50929190613ba0565b600060405180830381865afa158015611d6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d969190614070565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e4c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290614151565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f9d57806003600060046000815480929190611ef490614171565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611fba612017565b8152602001611fc7612017565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b61204c81612039565b82525050565b60006020820190506120676000830184612043565b92915050565b6000604051905090565b600080fd5b600080fd5b61208a81612039565b811461209557600080fd5b50565b6000813590506120a781612081565b92915050565b6000602082840312156120c3576120c2612077565b5b60006120d184828501612098565b91505092915050565b60008115159050919050565b6120ef816120da565b82525050565b600060208201905061210a60008301846120e6565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061213b82612110565b9050919050565b61214b81612130565b811461215657600080fd5b50565b60008135905061216881612142565b92915050565b612177816120da565b811461218257600080fd5b50565b6000813590506121948161216e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121bf576121be61219a565b5b8235905067ffffffffffffffff8111156121dc576121db61219f565b5b6020830191508360018202830111156121f8576121f76121a4565b5b9250929050565b600080600080600080600060c0888a03121561221e5761221d612077565b5b600061222c8a828b01612159565b975050602061223d8a828b01612185565b965050604061224e8a828b01612185565b955050606061225f8a828b01612098565b94505060806122708a828b01612098565b93505060a088013567ffffffffffffffff8111156122915761229061207c565b5b61229d8a828b016121a9565b925092505092959891949750929550565b6000806000606084860312156122c7576122c6612077565b5b60006122d586828701612098565b93505060206122e686828701612098565b92505060406122f786828701612185565b9150509250925092565b6000806040838503121561231857612317612077565b5b600061232685828601612159565b925050602061233785828601612098565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561237b578082015181840152602081019050612360565b60008484015250505050565b6000601f19601f8301169050919050565b60006123a382612341565b6123ad818561234c565b93506123bd81856020860161235d565b6123c681612387565b840191505092915050565b600060208201905081810360008301526123eb8184612398565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61243082612387565b810181811067ffffffffffffffff8211171561244f5761244e6123f8565b5b80604052505050565b600061246261206d565b905061246e8282612427565b919050565b600067ffffffffffffffff82111561248e5761248d6123f8565b5b61249782612387565b9050602081019050919050565b82818337600083830152505050565b60006124c66124c184612473565b612458565b9050828152602081018484840111156124e2576124e16123f3565b5b6124ed8482856124a4565b509392505050565b600082601f83011261250a5761250961219a565b5b813561251a8482602086016124b3565b91505092915050565b60006020828403121561253957612538612077565b5b600082013567ffffffffffffffff8111156125575761255661207c565b5b612563848285016124f5565b91505092915050565b61257581612130565b82525050565b6000602082019050612590600083018461256c565b92915050565b6000806000606084860312156125af576125ae612077565b5b60006125bd86828701612159565b93505060206125ce86828701612159565b92505060406125df86828701612098565b9150509250925092565b6000602082840312156125ff576125fe612077565b5b600061260d84828501612159565b91505092915050565b60008060006060848603121561262f5761262e612077565b5b600061263d86828701612098565b935050602061264e86828701612185565b925050604061265f86828701612185565b9150509250925092565b60008060006060848603121561268257612681612077565b5b600061269086828701612159565b93505060206126a186828701612098565b92505060406126b286828701612098565b9150509250925092565b600080600080608085870312156126d6576126d5612077565b5b60006126e487828801612098565b94505060206126f587828801612159565b935050604061270687828801612098565b925050606061271787828801612185565b91505092959194509250565b60008083601f8401126127395761273861219a565b5b8235905067ffffffffffffffff8111156127565761275561219f565b5b602083019150836001820283011115612772576127716121a4565b5b9250929050565b600081905082602060020282011115612795576127946121a4565b5b92915050565b6000806000806000806000806000806101408b8d0312156127bf576127be612077565b5b60008b013567ffffffffffffffff8111156127dd576127dc61207c565b5b6127e98d828e01612723565b9a509a505060206127fc8d828e01612098565b985050604061280d8d828e01612779565b975050608061281e8d828e01612779565b96505060c061282f8d828e01612098565b95505060e06128408d828e01612185565b9450506101006128528d828e01612185565b9350506101208b013567ffffffffffffffff8111156128745761287361207c565b5b6128808d828e016121a9565b92509250509295989b9194979a5092959850565b6000819050919050565b6128a781612894565b81146128b257600080fd5b50565b6000813590506128c48161289e565b92915050565b600080604083850312156128e1576128e0612077565b5b600083013567ffffffffffffffff8111156128ff576128fe61207c565b5b61290b858286016124f5565b925050602061291c858286016128b5565b9150509250929050565b61292f81612039565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006129618383612926565b60208301905092915050565b6000602082019050919050565b61298381612935565b61298d8184612940565b92506129988261294b565b8060005b838110156129c95781516129b08782612955565b96506129bb8361296d565b92505060018101905061299c565b505050505050565b6129da816120da565b82525050565b60e0820160008201516129f66000850182612926565b506020820151612a09602085018261297a565b506040820151612a1c606085018261297a565b506060820151612a2f60a0850182612926565b506080820151612a4260c08501826129d1565b50505050565b600082825260208201905092915050565b6000612a6482612341565b612a6e8185612a48565b9350612a7e81856020860161235d565b612a8781612387565b840191505092915050565b600060c0830160008301518482036000860152612aaf8282612a59565b9150506020830151612ac46020860182612926565b506040830151612ad76040860182612926565b506060830151612aea6060860182612926565b506080830151612afd60808601826129d1565b5060a0830151612b1060a08601826129d1565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000612b4282612b1b565b612b4c8185612b26565b9350612b5c81856020860161235d565b612b6581612387565b840191505092915050565b60006101a082019050612b86600083018a612043565b612b93602083018961256c565b612ba06040830188612043565b612bad60608301876129e0565b818103610140830152612bc08186612a92565b9050612bd06101608301856120e6565b818103610180830152612be38184612b37565b905098975050505050505050565b60008060208385031215612c0857612c07612077565b5b600083013567ffffffffffffffff811115612c2657612c2561207c565b5b612c3285828601612723565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c7381612130565b82525050565b604082016000820151612c8f6000850182612926565b506020820151612ca26020850182612c6a565b50505050565b6000612cb48383612c79565b60408301905092915050565b6000602082019050919050565b6000612cd882612c3e565b612ce28185612c49565b9350612ced83612c5a565b8060005b83811015612d1e578151612d058882612ca8565b9750612d1083612cc0565b925050600181019050612cf1565b5085935050505092915050565b60006020820190508181036000830152612d458184612ccd565b905092915050565b60008060408385031215612d6457612d63612077565b5b6000612d7285828601612159565b9250506020612d8385828601612159565b9150509250929050565b60008083601f840112612da357612da261219a565b5b8235905067ffffffffffffffff811115612dc057612dbf61219f565b5b602083019150836040820283011115612ddc57612ddb6121a4565b5b9250929050565b60008083601f840112612df957612df861219a565b5b8235905067ffffffffffffffff811115612e1657612e1561219f565b5b602083019150836020820283011115612e3257612e316121a4565b5b9250929050565b60008060008060008060608789031215612e5657612e55612077565b5b600087013567ffffffffffffffff811115612e7457612e7361207c565b5b612e8089828a01612d8d565b9650965050602087013567ffffffffffffffff811115612ea357612ea261207c565b5b612eaf89828a01612723565b9450945050604087013567ffffffffffffffff811115612ed257612ed161207c565b5b612ede89828a01612de3565b92509250509295509295509295565b60006060820190508181036000830152612f078186612398565b9050612f16602083018561256c565b612f236040830184612043565b949350505050565b600081519050612f3a81612081565b92915050565b600060208284031215612f5657612f55612077565b5b6000612f6484828501612f2b565b91505092915050565b600081519050612f7c8161216e565b92915050565b600060208284031215612f9857612f97612077565b5b6000612fa684828501612f6d565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b600061300b602b8361234c565b915061301682612faf565b604082019050919050565b6000602082019050818103600083015261303a81612ffe565b9050919050565b600061304d8385612b26565b935061305a8385846124a4565b61306383612387565b840190509392505050565b600060a08201905061308360008301896120e6565b61309060208301886120e6565b61309d6040830187612043565b6130aa6060830186612043565b81810360808301526130bd818486613041565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061310482612039565b915061310f83612039565b9250828203905081811115613127576131266130ca565b5b92915050565b600061313882612039565b915061314383612039565b925082820261315181612039565b91508282048414831517613168576131676130ca565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131a982612039565b91506131b483612039565b9250826131c4576131c361316f565b5b828204905092915050565b60006131da82612039565b91506131e583612039565b92508282019050808211156131fd576131fc6130ca565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b600061325f60278361234c565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b60006080820190506132aa6000830187612043565b6132b7602083018661256c565b6132c46040830185612043565b6132d160608301846120e6565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061333660258361234c565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b6000604082019050613381600083018561256c565b61338e6020830184612043565b9392505050565b60006133a86133a384612473565b612458565b9050828152602081018484840111156133c4576133c36123f3565b5b6133cf84828561235d565b509392505050565b600082601f8301126133ec576133eb61219a565b5b81516133fc848260208601613395565b91505092915050565b60006020828403121561341b5761341a612077565b5b600082015167ffffffffffffffff8111156134395761343861207c565b5b613445848285016133d7565b91505092915050565b6000606082019050613463600083018661256c565b613470602083018561256c565b61347d6040830184612043565b949350505050565b600060408201905061349a600083018561256c565b6134a7602083018461256c565b9392505050565b60006060820190506134c36000830186612043565b6134d060208301856120e6565b6134dd60408301846120e6565b949350505050565b60006060820190506134fa600083018661256c565b6135076020830185612043565b6135146040830184612043565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b600061357860278361234c565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061360a60258361234c565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b600061364c838561234c565b93506136598385846124a4565b61366283612387565b840190509392505050565b82818337505050565b6136826040838361366d565b5050565b60006101608201905061369c600083018e61256c565b81810360208301526136af818c8e613640565b90506136be604083018b612043565b6136cb606083018a613676565b6136d860a0830189613676565b6136e560e0830188612043565b6136f36101008301876120e6565b6137016101208301866120e6565b818103610140830152613715818486613041565b90509c9b505050505050505050505050565b61373081612894565b82525050565b6000819050919050565b6000819050919050565b600061376561376061375b84613736565b613740565b612039565b9050919050565b6137758161374a565b82525050565b600060808201905081810360008301526137958187612398565b90506137a46020830186613727565b6137b160408301856120e6565b6137be606083018461376c565b95945050505050565b6000815190506137d68161289e565b92915050565b6000602082840312156137f2576137f1612077565b5b6000613800848285016137c7565b91505092915050565b60008151905061381881612142565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff821115613843576138426123f8565b5b602082029050919050565b600061386161385c84613828565b612458565b9050806020840283018581111561387b5761387a6121a4565b5b835b818110156138a457806138908882612f2b565b84526020840193505060208101905061387d565b5050509392505050565b600082601f8301126138c3576138c261219a565b5b60026138d084828561384e565b91505092915050565b600060e082840312156138ef576138ee61381e565b5b6138f960a0612458565b9050600061390984828501612f2b565b600083015250602061391d848285016138ae565b6020830152506060613931848285016138ae565b60408301525060a061394584828501612f2b565b60608301525060c061395984828501612f6d565b60808301525092915050565b600060c0828403121561397b5761397a61381e565b5b61398560c0612458565b9050600082015167ffffffffffffffff8111156139a5576139a4613823565b5b6139b1848285016133d7565b60008301525060206139c584828501612f2b565b60208301525060406139d984828501612f2b565b60408301525060606139ed84828501612f2b565b6060830152506080613a0184828501612f6d565b60808301525060a0613a1584828501612f6d565b60a08301525092915050565b600067ffffffffffffffff821115613a3c57613a3b6123f8565b5b613a4582612387565b9050602081019050919050565b6000613a65613a6084613a21565b612458565b905082815260208101848484011115613a8157613a806123f3565b5b613a8c84828561235d565b509392505050565b600082601f830112613aa957613aa861219a565b5b8151613ab9848260208601613a52565b91505092915050565b60008060008060008060006101a0888a031215613ae257613ae1612077565b5b6000613af08a828b01612f2b565b9750506020613b018a828b01613809565b9650506040613b128a828b01612f2b565b9550506060613b238a828b016138d9565b94505061014088015167ffffffffffffffff811115613b4557613b4461207c565b5b613b518a828b01613965565b935050610160613b638a828b01612f6d565b92505061018088015167ffffffffffffffff811115613b8557613b8461207c565b5b613b918a828b01613a94565b91505092959891949750929550565b60006020820190508181036000830152613bbb818486613640565b90509392505050565b600067ffffffffffffffff821115613bdf57613bde6123f8565b5b602082029050602081019050919050565b600060408284031215613c0657613c0561381e565b5b613c106040612458565b90506000613c2084828501612f2b565b6000830152506020613c3484828501613809565b60208301525092915050565b6000613c53613c4e84613bc4565b612458565b90508083825260208201905060408402830185811115613c7657613c756121a4565b5b835b81811015613c9f5780613c8b8882613bf0565b845260208401935050604081019050613c78565b5050509392505050565b600082601f830112613cbe57613cbd61219a565b5b8151613cce848260208601613c40565b91505092915050565b600060208284031215613ced57613cec612077565b5b600082015167ffffffffffffffff811115613d0b57613d0a61207c565b5b613d1784828501613ca9565b91505092915050565b6000819050919050565b6000613d396020840184612098565b905092915050565b6000613d506020840184612159565b905092915050565b60408201613d696000830183613d2a565b613d766000850182612926565b50613d846020830183613d41565b613d916020850182612c6a565b50505050565b6000613da38383613d58565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613dd38385612c49565b9350613dde82613d20565b8060005b85811015613e1757613df48284613daf565b613dfe8882613d97565b9750613e0983613dba565b925050600181019050613de2565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613e4e60208401846128b5565b905092915050565b613e5f81612894565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613e9157613e90613e6f565b5b83810192508235915060208301925067ffffffffffffffff821115613eb957613eb8613e65565b5b600182023603831315613ecf57613ece613e6a565b5b509250929050565b6000613ee38385612a48565b9350613ef08385846124a4565b613ef983612387565b840190509392505050565b600060408301613f176000840184613e3f565b613f246000860182613e56565b50613f326020840184613e74565b8583036020870152613f45838284613ed7565b925050508091505092915050565b6000613f5f8383613f04565b905092915050565b600082356001604003833603038112613f8357613f82613e6f565b5b82810191505092915050565b6000602082019050919050565b6000613fa88385613e24565b935083602084028501613fba84613e35565b8060005b87811015613ffe578484038952613fd58284613f67565b613fdf8582613f53565b9450613fea83613f8f565b925060208a01995050600181019050613fbe565b50829750879450505050509392505050565b6000608082019050614025600083018a61256c565b818103602083015261403881888a613dc7565b9050818103604083015261404d818688613640565b90508181036060830152614062818486613f9c565b905098975050505050505050565b60008060006060848603121561408957614088612077565b5b600084015167ffffffffffffffff8111156140a7576140a661207c565b5b6140b3868287016133d7565b93505060206140c486828701613809565b92505060406140d586828701612f2b565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b600061413b602f8361234c565b9150614146826140df565b604082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b600061417c82612039565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141ae576141ad6130ca565b5b60018201905091905056fea2646970667358221220026b4bb11ac8ad63cceb7abcecbd53a34a36022d038e391c6add3e4c44ac6ee564736f6c63430008180033",
"deployedBytecode": "0x6080604052600436106101cd5760003560e01c806388380274116100f7578063a233627911610095578063dd8aaa4f11610064578063dd8aaa4f146106a6578063e5b4d827146106cf578063f8300fca146106f8578063fcb4888e14610737576101cd565b8063a2336279146105c0578063da66863a14610603578063dc00bbfe14610640578063dd62ed3e14610669576101cd565b80639dc29fac116100d15780639dc29fac146105015780639fbe7c731461052a5780639fd098721461055a578063a230c52414610583576101cd565b806388380274146104725780638ce516da146104af578063975762b3146104d8576101cd565b806340c10f191161016f5780635ffc70041161013e5780635ffc7004146103b8578063642b5bfb146103e157806370a082311461040c57806378e21c6e14610449576101cd565b806340c10f19146102ec57806350cde8ef146103155780635c253c0b146103525780635daf08ca1461037b576101cd565b806318160ddd116101ab57806318160ddd146102655780631d0d37c9146102905780631e57e078146102b95780632d17c062146102c3576101cd565b806311aee380146101d257806317906c2e146101fd57806317c1821714610228575b600080fd5b3480156101de57600080fd5b506101e7610760565b6040516101f49190612052565b60405180910390f35b34801561020957600080fd5b50610212610766565b60405161021f9190612052565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906120ad565b6107fe565b60405161025c91906120f5565b60405180910390f35b34801561027157600080fd5b5061027a6108a5565b6040516102879190612052565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906121ff565b61093c565b005b6102c1610aa2565b005b3480156102cf57600080fd5b506102ea60048036038101906102e591906122ae565b610ba8565b005b3480156102f857600080fd5b50610313600480360381019061030e9190612301565b610c8b565b005b34801561032157600080fd5b5061033c600480360381019061033791906120ad565b610e04565b60405161034991906123d1565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612523565b610eae565b005b34801561038757600080fd5b506103a2600480360381019061039d91906120ad565b610ee8565b6040516103af919061257b565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190612596565b610f1b565b005b3480156103ed57600080fd5b506103f66110e4565b6040516104039190612052565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906125e9565b61117c565b6040516104409190612052565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b9190612616565b611220565b005b34801561047e57600080fd5b5061049960048036038101906104949190612669565b611260565b6040516104a691906120f5565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190612596565b611412565b005b3480156104e457600080fd5b506104ff60048036038101906104fa91906126bc565b61158e565b005b34801561050d57600080fd5b5061052860048036038101906105239190612301565b611650565b005b610544600480360381019061053f919061279b565b6117c9565b6040516105519190612052565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c91906128ca565b61188e565b005b34801561058f57600080fd5b506105aa60048036038101906105a591906125e9565b611938565b6040516105b791906120f5565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e291906120ad565b611958565b6040516105fa9796959493929190612b70565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190612bf1565b611a2b565b6040516106379190612d2b565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906120ad565b611ad8565b005b34801561067557600080fd5b50610690600480360381019061068b9190612d4d565b611b12565b60405161069d9190612052565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612596565b611bb9565b005b3480156106db57600080fd5b506106f660048036038101906106f19190612e39565b611c4d565b005b34801561070457600080fd5b5061071f600480360381019061071a9190612bf1565b611cee565b60405161072e93929190612eed565b60405180910390f35b34801561074357600080fd5b5061075e600480360381019061075991906125e9565b611da3565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f99190612f40565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b815260040161085b9190612052565b6020604051808303816000875af115801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e9190612f82565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190612f40565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109e55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1b90613021565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a679695949392919061306e565b600060405180830381600087803b158015610a8157600080fd5b505af1158015610a95573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610ba45760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610afd91906130f9565b831015610b3f57610b0c6108a5565b610b158361117c565b34610b20919061312d565b610b2a919061319e565b90508084610b3891906131cf565b9350610b4e565b8334610b4b91906130f9565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b94573d6000803e3d6000fd5b5050508080600101915050610aaa565b5050565b81610bb23361117c565b1015610bf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bea90613275565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c549493929190613295565b600060405180830381600087803b158015610c6e57600080fd5b505af1158015610c82573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d345750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a9061334c565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610dce92919061336c565b600060405180830381600087803b158015610de857600080fd5b505af1158015610dfc573d6000803e3d6000fd5b505050505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350cde8ef836040518263ffffffff1660e01b8152600401610e619190612052565b600060405180830381865afa158015610e7e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ea79190613405565b9050919050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610edd91906123d1565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433846040518463ffffffff1660e01b8152600401610f789392919061344e565b600060405180830381600087803b158015610f9257600080fd5b505af1158015610fa6573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6784848460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e89896040518363ffffffff1660e01b8152600401611044929190613485565b602060405180830381865afa158015611061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110859190612f40565b61108f91906131cf565b6040518463ffffffff1660e01b81526004016110ad9392919061344e565b600060405180830381600087803b1580156110c757600080fd5b505af11580156110db573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111779190612f40565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016111d8919061257b565b602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190612f40565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de81838383604051611253939291906134ae565b60405180910390a1505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6733868660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e338b6040518363ffffffff1660e01b81526004016112fd929190613485565b602060405180830381865afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190612f40565b61134891906131cf565b6040518463ffffffff1660e01b81526004016113669392919061344e565b600060405180830381600087803b15801561138057600080fd5b505af1158015611394573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3385856040518463ffffffff1660e01b81526004016113d5939291906134e5565b600060405180830381600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b50505050600190509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114bb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f19061358e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b81526004016115579392919061344e565b600060405180830381600087803b15801561157157600080fd5b505af1158015611585573d6000803e3d6000fd5b50505050505050565b816115998433611b12565b10156115ac576115a98333611b12565b91505b6115b7833384611bb9565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b81526004016116189493929190613295565b600060405180830381600087803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116f95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613620565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b815260040161179392919061336c565b600060405180830381600087803b1580156117ad57600080fd5b505af11580156117c1573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b815260040161183b9b9a99989796959493929190613686565b60206040518083038185885af1158015611859573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061187e9190612f40565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b81526004016118f0949392919061377b565b6020604051808303816000875af115801561190f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193391906137dc565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000806000611965611fa0565b61196d611fdd565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b81526004016119cc9190612052565b600060405180830381865afa1580156119e9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a129190613ac2565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b8152600401611a8a929190613ba0565b600060405180830381865afa158015611aa7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611ad09190613cd7565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a81604051611b079190612052565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611b70929190613485565b602060405180830381865afa158015611b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb19190612f40565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8484846040518463ffffffff1660e01b8152600401611c169392919061344e565b600060405180830381600087803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b8152600401611cb49796959493929190614010565b600060405180830381600087803b158015611cce57600080fd5b505af1158015611ce2573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611d50929190613ba0565b600060405180830381865afa158015611d6d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d969190614070565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e4c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290614151565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f9d57806003600060046000815480929190611ef490614171565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611fba612017565b8152602001611fc7612017565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b61204c81612039565b82525050565b60006020820190506120676000830184612043565b92915050565b6000604051905090565b600080fd5b600080fd5b61208a81612039565b811461209557600080fd5b50565b6000813590506120a781612081565b92915050565b6000602082840312156120c3576120c2612077565b5b60006120d184828501612098565b91505092915050565b60008115159050919050565b6120ef816120da565b82525050565b600060208201905061210a60008301846120e6565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061213b82612110565b9050919050565b61214b81612130565b811461215657600080fd5b50565b60008135905061216881612142565b92915050565b612177816120da565b811461218257600080fd5b50565b6000813590506121948161216e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121bf576121be61219a565b5b8235905067ffffffffffffffff8111156121dc576121db61219f565b5b6020830191508360018202830111156121f8576121f76121a4565b5b9250929050565b600080600080600080600060c0888a03121561221e5761221d612077565b5b600061222c8a828b01612159565b975050602061223d8a828b01612185565b965050604061224e8a828b01612185565b955050606061225f8a828b01612098565b94505060806122708a828b01612098565b93505060a088013567ffffffffffffffff8111156122915761229061207c565b5b61229d8a828b016121a9565b925092505092959891949750929550565b6000806000606084860312156122c7576122c6612077565b5b60006122d586828701612098565b93505060206122e686828701612098565b92505060406122f786828701612185565b9150509250925092565b6000806040838503121561231857612317612077565b5b600061232685828601612159565b925050602061233785828601612098565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561237b578082015181840152602081019050612360565b60008484015250505050565b6000601f19601f8301169050919050565b60006123a382612341565b6123ad818561234c565b93506123bd81856020860161235d565b6123c681612387565b840191505092915050565b600060208201905081810360008301526123eb8184612398565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61243082612387565b810181811067ffffffffffffffff8211171561244f5761244e6123f8565b5b80604052505050565b600061246261206d565b905061246e8282612427565b919050565b600067ffffffffffffffff82111561248e5761248d6123f8565b5b61249782612387565b9050602081019050919050565b82818337600083830152505050565b60006124c66124c184612473565b612458565b9050828152602081018484840111156124e2576124e16123f3565b5b6124ed8482856124a4565b509392505050565b600082601f83011261250a5761250961219a565b5b813561251a8482602086016124b3565b91505092915050565b60006020828403121561253957612538612077565b5b600082013567ffffffffffffffff8111156125575761255661207c565b5b612563848285016124f5565b91505092915050565b61257581612130565b82525050565b6000602082019050612590600083018461256c565b92915050565b6000806000606084860312156125af576125ae612077565b5b60006125bd86828701612159565b93505060206125ce86828701612159565b92505060406125df86828701612098565b9150509250925092565b6000602082840312156125ff576125fe612077565b5b600061260d84828501612159565b91505092915050565b60008060006060848603121561262f5761262e612077565b5b600061263d86828701612098565b935050602061264e86828701612185565b925050604061265f86828701612185565b9150509250925092565b60008060006060848603121561268257612681612077565b5b600061269086828701612159565b93505060206126a186828701612098565b92505060406126b286828701612098565b9150509250925092565b600080600080608085870312156126d6576126d5612077565b5b60006126e487828801612098565b94505060206126f587828801612159565b935050604061270687828801612098565b925050606061271787828801612185565b91505092959194509250565b60008083601f8401126127395761273861219a565b5b8235905067ffffffffffffffff8111156127565761275561219f565b5b602083019150836001820283011115612772576127716121a4565b5b9250929050565b600081905082602060020282011115612795576127946121a4565b5b92915050565b6000806000806000806000806000806101408b8d0312156127bf576127be612077565b5b60008b013567ffffffffffffffff8111156127dd576127dc61207c565b5b6127e98d828e01612723565b9a509a505060206127fc8d828e01612098565b985050604061280d8d828e01612779565b975050608061281e8d828e01612779565b96505060c061282f8d828e01612098565b95505060e06128408d828e01612185565b9450506101006128528d828e01612185565b9350506101208b013567ffffffffffffffff8111156128745761287361207c565b5b6128808d828e016121a9565b92509250509295989b9194979a5092959850565b6000819050919050565b6128a781612894565b81146128b257600080fd5b50565b6000813590506128c48161289e565b92915050565b600080604083850312156128e1576128e0612077565b5b600083013567ffffffffffffffff8111156128ff576128fe61207c565b5b61290b858286016124f5565b925050602061291c858286016128b5565b9150509250929050565b61292f81612039565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b60006129618383612926565b60208301905092915050565b6000602082019050919050565b61298381612935565b61298d8184612940565b92506129988261294b565b8060005b838110156129c95781516129b08782612955565b96506129bb8361296d565b92505060018101905061299c565b505050505050565b6129da816120da565b82525050565b60e0820160008201516129f66000850182612926565b506020820151612a09602085018261297a565b506040820151612a1c606085018261297a565b506060820151612a2f60a0850182612926565b506080820151612a4260c08501826129d1565b50505050565b600082825260208201905092915050565b6000612a6482612341565b612a6e8185612a48565b9350612a7e81856020860161235d565b612a8781612387565b840191505092915050565b600060c0830160008301518482036000860152612aaf8282612a59565b9150506020830151612ac46020860182612926565b506040830151612ad76040860182612926565b506060830151612aea6060860182612926565b506080830151612afd60808601826129d1565b5060a0830151612b1060a08601826129d1565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000612b4282612b1b565b612b4c8185612b26565b9350612b5c81856020860161235d565b612b6581612387565b840191505092915050565b60006101a082019050612b86600083018a612043565b612b93602083018961256c565b612ba06040830188612043565b612bad60608301876129e0565b818103610140830152612bc08186612a92565b9050612bd06101608301856120e6565b818103610180830152612be38184612b37565b905098975050505050505050565b60008060208385031215612c0857612c07612077565b5b600083013567ffffffffffffffff811115612c2657612c2561207c565b5b612c3285828601612723565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c7381612130565b82525050565b604082016000820151612c8f6000850182612926565b506020820151612ca26020850182612c6a565b50505050565b6000612cb48383612c79565b60408301905092915050565b6000602082019050919050565b6000612cd882612c3e565b612ce28185612c49565b9350612ced83612c5a565b8060005b83811015612d1e578151612d058882612ca8565b9750612d1083612cc0565b925050600181019050612cf1565b5085935050505092915050565b60006020820190508181036000830152612d458184612ccd565b905092915050565b60008060408385031215612d6457612d63612077565b5b6000612d7285828601612159565b9250506020612d8385828601612159565b9150509250929050565b60008083601f840112612da357612da261219a565b5b8235905067ffffffffffffffff811115612dc057612dbf61219f565b5b602083019150836040820283011115612ddc57612ddb6121a4565b5b9250929050565b60008083601f840112612df957612df861219a565b5b8235905067ffffffffffffffff811115612e1657612e1561219f565b5b602083019150836020820283011115612e3257612e316121a4565b5b9250929050565b60008060008060008060608789031215612e5657612e55612077565b5b600087013567ffffffffffffffff811115612e7457612e7361207c565b5b612e8089828a01612d8d565b9650965050602087013567ffffffffffffffff811115612ea357612ea261207c565b5b612eaf89828a01612723565b9450945050604087013567ffffffffffffffff811115612ed257612ed161207c565b5b612ede89828a01612de3565b92509250509295509295509295565b60006060820190508181036000830152612f078186612398565b9050612f16602083018561256c565b612f236040830184612043565b949350505050565b600081519050612f3a81612081565b92915050565b600060208284031215612f5657612f55612077565b5b6000612f6484828501612f2b565b91505092915050565b600081519050612f7c8161216e565b92915050565b600060208284031215612f9857612f97612077565b5b6000612fa684828501612f6d565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b600061300b602b8361234c565b915061301682612faf565b604082019050919050565b6000602082019050818103600083015261303a81612ffe565b9050919050565b600061304d8385612b26565b935061305a8385846124a4565b61306383612387565b840190509392505050565b600060a08201905061308360008301896120e6565b61309060208301886120e6565b61309d6040830187612043565b6130aa6060830186612043565b81810360808301526130bd818486613041565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061310482612039565b915061310f83612039565b9250828203905081811115613127576131266130ca565b5b92915050565b600061313882612039565b915061314383612039565b925082820261315181612039565b91508282048414831517613168576131676130ca565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131a982612039565b91506131b483612039565b9250826131c4576131c361316f565b5b828204905092915050565b60006131da82612039565b91506131e583612039565b92508282019050808211156131fd576131fc6130ca565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b600061325f60278361234c565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b60006080820190506132aa6000830187612043565b6132b7602083018661256c565b6132c46040830185612043565b6132d160608301846120e6565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b600061333660258361234c565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b6000604082019050613381600083018561256c565b61338e6020830184612043565b9392505050565b60006133a86133a384612473565b612458565b9050828152602081018484840111156133c4576133c36123f3565b5b6133cf84828561235d565b509392505050565b600082601f8301126133ec576133eb61219a565b5b81516133fc848260208601613395565b91505092915050565b60006020828403121561341b5761341a612077565b5b600082015167ffffffffffffffff8111156134395761343861207c565b5b613445848285016133d7565b91505092915050565b6000606082019050613463600083018661256c565b613470602083018561256c565b61347d6040830184612043565b949350505050565b600060408201905061349a600083018561256c565b6134a7602083018461256c565b9392505050565b60006060820190506134c36000830186612043565b6134d060208301856120e6565b6134dd60408301846120e6565b949350505050565b60006060820190506134fa600083018661256c565b6135076020830185612043565b6135146040830184612043565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b600061357860278361234c565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b600061360a60258361234c565b9150613615826135ae565b604082019050919050565b60006020820190508181036000830152613639816135fd565b9050919050565b600061364c838561234c565b93506136598385846124a4565b61366283612387565b840190509392505050565b82818337505050565b6136826040838361366d565b5050565b60006101608201905061369c600083018e61256c565b81810360208301526136af818c8e613640565b90506136be604083018b612043565b6136cb606083018a613676565b6136d860a0830189613676565b6136e560e0830188612043565b6136f36101008301876120e6565b6137016101208301866120e6565b818103610140830152613715818486613041565b90509c9b505050505050505050505050565b61373081612894565b82525050565b6000819050919050565b6000819050919050565b600061376561376061375b84613736565b613740565b612039565b9050919050565b6137758161374a565b82525050565b600060808201905081810360008301526137958187612398565b90506137a46020830186613727565b6137b160408301856120e6565b6137be606083018461376c565b95945050505050565b6000815190506137d68161289e565b92915050565b6000602082840312156137f2576137f1612077565b5b6000613800848285016137c7565b91505092915050565b60008151905061381881612142565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff821115613843576138426123f8565b5b602082029050919050565b600061386161385c84613828565b612458565b9050806020840283018581111561387b5761387a6121a4565b5b835b818110156138a457806138908882612f2b565b84526020840193505060208101905061387d565b5050509392505050565b600082601f8301126138c3576138c261219a565b5b60026138d084828561384e565b91505092915050565b600060e082840312156138ef576138ee61381e565b5b6138f960a0612458565b9050600061390984828501612f2b565b600083015250602061391d848285016138ae565b6020830152506060613931848285016138ae565b60408301525060a061394584828501612f2b565b60608301525060c061395984828501612f6d565b60808301525092915050565b600060c0828403121561397b5761397a61381e565b5b61398560c0612458565b9050600082015167ffffffffffffffff8111156139a5576139a4613823565b5b6139b1848285016133d7565b60008301525060206139c584828501612f2b565b60208301525060406139d984828501612f2b565b60408301525060606139ed84828501612f2b565b6060830152506080613a0184828501612f6d565b60808301525060a0613a1584828501612f6d565b60a08301525092915050565b600067ffffffffffffffff821115613a3c57613a3b6123f8565b5b613a4582612387565b9050602081019050919050565b6000613a65613a6084613a21565b612458565b905082815260208101848484011115613a8157613a806123f3565b5b613a8c84828561235d565b509392505050565b600082601f830112613aa957613aa861219a565b5b8151613ab9848260208601613a52565b91505092915050565b60008060008060008060006101a0888a031215613ae257613ae1612077565b5b6000613af08a828b01612f2b565b9750506020613b018a828b01613809565b9650506040613b128a828b01612f2b565b9550506060613b238a828b016138d9565b94505061014088015167ffffffffffffffff811115613b4557613b4461207c565b5b613b518a828b01613965565b935050610160613b638a828b01612f6d565b92505061018088015167ffffffffffffffff811115613b8557613b8461207c565b5b613b918a828b01613a94565b91505092959891949750929550565b60006020820190508181036000830152613bbb818486613640565b90509392505050565b600067ffffffffffffffff821115613bdf57613bde6123f8565b5b602082029050602081019050919050565b600060408284031215613c0657613c0561381e565b5b613c106040612458565b90506000613c2084828501612f2b565b6000830152506020613c3484828501613809565b60208301525092915050565b6000613c53613c4e84613bc4565b612458565b90508083825260208201905060408402830185811115613c7657613c756121a4565b5b835b81811015613c9f5780613c8b8882613bf0565b845260208401935050604081019050613c78565b5050509392505050565b600082601f830112613cbe57613cbd61219a565b5b8151613cce848260208601613c40565b91505092915050565b600060208284031215613ced57613cec612077565b5b600082015167ffffffffffffffff811115613d0b57613d0a61207c565b5b613d1784828501613ca9565b91505092915050565b6000819050919050565b6000613d396020840184612098565b905092915050565b6000613d506020840184612159565b905092915050565b60408201613d696000830183613d2a565b613d766000850182612926565b50613d846020830183613d41565b613d916020850182612c6a565b50505050565b6000613da38383613d58565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613dd38385612c49565b9350613dde82613d20565b8060005b85811015613e1757613df48284613daf565b613dfe8882613d97565b9750613e0983613dba565b925050600181019050613de2565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613e4e60208401846128b5565b905092915050565b613e5f81612894565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613e9157613e90613e6f565b5b83810192508235915060208301925067ffffffffffffffff821115613eb957613eb8613e65565b5b600182023603831315613ecf57613ece613e6a565b5b509250929050565b6000613ee38385612a48565b9350613ef08385846124a4565b613ef983612387565b840190509392505050565b600060408301613f176000840184613e3f565b613f246000860182613e56565b50613f326020840184613e74565b8583036020870152613f45838284613ed7565b925050508091505092915050565b6000613f5f8383613f04565b905092915050565b600082356001604003833603038112613f8357613f82613e6f565b5b82810191505092915050565b6000602082019050919050565b6000613fa88385613e24565b935083602084028501613fba84613e35565b8060005b87811015613ffe578484038952613fd58284613f67565b613fdf8582613f53565b9450613fea83613f8f565b925060208a01995050600181019050613fbe565b50829750879450505050509392505050565b6000608082019050614025600083018a61256c565b818103602083015261403881888a613dc7565b9050818103604083015261404d818688613640565b90508181036060830152614062818486613f9c565b905098975050505050505050565b60008060006060848603121561408957614088612077565b5b600084015167ffffffffffffffff8111156140a7576140a661207c565b5b6140b3868287016133d7565b93505060206140c486828701613809565b92505060406140d586828701612f2b565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b600061413b602f8361234c565b9150614146826140df565b604082019050919050565b6000602082019050818103600083015261416a8161412e565b9050919050565b600061417c82612039565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036141ae576141ad6130ca565b5b60018201905091905056fea2646970667358221220026b4bb11ac8ad63cceb7abcecbd53a34a36022d038e391c6add3e4c44ac6ee564736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}