dgf-prototype/frontend/contractArtifacts/DAO.json

811 lines
85 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": "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": "0x60806040523480156200001157600080fd5b5060405162004679380380620046798339818101604052810190620000379190620003bb565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000154919062000482565b600060405180830381600087803b1580156200016f57600080fd5b505af115801562000184573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b8152600401620001e5919062000482565b600060405180830381600087803b1580156200020057600080fd5b505af115801562000215573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe0d695a306040518263ffffffff1660e01b815260040162000276919062000482565b600060405180830381600087803b1580156200029157600080fd5b505af1158015620002a6573d6000803e3d6000fd5b505050505050506200049f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002e582620002b8565b9050919050565b6000620002f982620002d8565b9050919050565b6200030b81620002ec565b81146200031757600080fd5b50565b6000815190506200032b8162000300565b92915050565b60006200033e82620002d8565b9050919050565b620003508162000331565b81146200035c57600080fd5b50565b600081519050620003708162000345565b92915050565b60006200038382620002d8565b9050919050565b620003958162000376565b8114620003a157600080fd5b50565b600081519050620003b5816200038a565b92915050565b600080600060608486031215620003d757620003d6620002b3565b5b6000620003e7868287016200031a565b9350506020620003fa868287016200035f565b92505060406200040d86828701620003a4565b9150509250925092565b6000819050919050565b6000620004426200043c6200043684620002b8565b62000417565b620002b8565b9050919050565b6000620004568262000421565b9050919050565b60006200046a8262000449565b9050919050565b6200047c816200045d565b82525050565b600060208201905062000499600083018462000471565b92915050565b6141ca80620004af6000396000f3fe6080604052600436106101c25760003560e01c806378e21c6e116100f7578063a230c52411610095578063dd62ed3e11610064578063dd62ed3e1461065e578063e5b4d8271461069b578063f8300fca146106c4578063fcb4888e14610703576101c2565b8063a230c52414610578578063a2336279146105b5578063da66863a146105f8578063dc00bbfe14610635576101c2565b8063975762b3116100d1578063975762b3146104cd5780639dc29fac146104f65780639fbe7c731461051f5780639fd098721461054f576101c2565b806378e21c6e1461043e57806388380274146104675780638ce516da146104a4576101c2565b806340c10f19116101645780635daf08ca1161013e5780635daf08ca146103705780635ffc7004146103ad578063642b5bfb146103d657806370a0823114610401576101c2565b806340c10f19146102e157806350cde8ef1461030a5780635c253c0b14610347576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc61072c565b6040516101e9919061202d565b60405180910390f35b3480156101fe57600080fd5b50610207610732565b604051610214919061202d565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190612088565b6107ca565b60405161025191906120d0565b60405180910390f35b34801561026657600080fd5b5061026f610871565b60405161027c919061202d565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a791906121da565b610908565b005b6102b6610a6e565b005b3480156102c457600080fd5b506102df60048036038101906102da9190612289565b610b74565b005b3480156102ed57600080fd5b50610308600480360381019061030391906122dc565b610c57565b005b34801561031657600080fd5b50610331600480360381019061032c9190612088565b610dd0565b60405161033e91906123ac565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906124fe565b610e7a565b005b34801561037c57600080fd5b5061039760048036038101906103929190612088565b610eb4565b6040516103a49190612556565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190612571565b610ee7565b005b3480156103e257600080fd5b506103eb6110b0565b6040516103f8919061202d565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906125c4565b611148565b604051610435919061202d565b60405180910390f35b34801561044a57600080fd5b50610465600480360381019061046091906125f1565b6111ec565b005b34801561047357600080fd5b5061048e60048036038101906104899190612644565b61122c565b60405161049b91906120d0565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612571565b6113fd565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190612697565b611579565b005b34801561050257600080fd5b5061051d600480360381019061051891906122dc565b6116bf565b005b61053960048036038101906105349190612776565b611838565b604051610546919061202d565b60405180910390f35b34801561055b57600080fd5b50610576600480360381019061057191906128a5565b6118fd565b005b34801561058457600080fd5b5061059f600480360381019061059a91906125c4565b6119a7565b6040516105ac91906120d0565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612088565b6119c7565b6040516105ef9796959493929190612b4b565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190612bcc565b611a9a565b60405161062c9190612d06565b60405180910390f35b34801561064157600080fd5b5061065c60048036038101906106579190612088565b611b47565b005b34801561066a57600080fd5b5061068560048036038101906106809190612d28565b611b81565b604051610692919061202d565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612e14565b611c28565b005b3480156106d057600080fd5b506106eb60048036038101906106e69190612bcc565b611cc9565b6040516106fa93929190612ec8565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906125c4565b611d7e565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c59190612f1b565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b8152600401610827919061202d565b6020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f5d565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109039190612f1b565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109b15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e790612ffc565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a3396959493929190613049565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b705760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ac991906130d4565b831015610b0b57610ad8610871565b610ae183611148565b34610aec9190613108565b610af69190613179565b90508084610b0491906131aa565b9350610b1a565b8334610b1791906130d4565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b60573d6000803e3d6000fd5b5050508080600101915050610a76565b5050565b81610b7e33611148565b1015610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690613250565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c209493929190613270565b600060405180830381600087803b158015610c3a57600080fd5b505af1158015610c4e573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d005750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690613327565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d9a929190613347565b600060405180830381600087803b158015610db457600080fd5b505af1158015610dc8573d6000803e3d6000fd5b505050505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350cde8ef836040518263ffffffff1660e01b8152600401610e2d919061202d565b600060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e7391906133e0565b9050919050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610ea991906123ac565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433846040518463ffffffff1660e01b8152600401610f4493929190613429565b600060405180830381600087803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6784848460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e89896040518363ffffffff1660e01b8152600401611010929190613460565b602060405180830381865afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190612f1b565b61105b91906131aa565b6040518463ffffffff1660e01b815260040161107993929190613429565b600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612f1b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016111a49190612556565b602060405180830381865afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190612f1b565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161121f93929190613489565b60405180910390a1505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3386866040518463ffffffff1660e01b815260040161126c939291906134c0565b6020604051808303816000875af115801561128b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112af9190612f1b565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c673387848860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e338d6040518363ffffffff1660e01b815260040161134c929190613460565b602060405180830381865afa158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190612f1b565b61139791906131aa565b6113a191906130d4565b6040518463ffffffff1660e01b81526004016113bf93929190613429565b600060405180830381600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b5050505060019150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114a65750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90613569565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161154293929190613429565b600060405180830381600087803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b50505050505050565b816115848433611b81565b1015611597576115948333611b81565b91505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433856040518463ffffffff1660e01b81526004016115f493929190613429565b600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b81526004016116879493929190613270565b600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117685750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e906135fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b8152600401611802929190613347565b600060405180830381600087803b15801561181c57600080fd5b505af1158015611830573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016118aa9b9a99989796959493929190613661565b60206040518083038185885af11580156118c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ed9190612f1b565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161195f9493929190613756565b6020604051808303816000875af115801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a291906137b7565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006119d4611f7b565b6119dc611fb8565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b8152600401611a3b919061202d565b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a819190613a9d565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b8152600401611af9929190613b7b565b600060405180830381865afa158015611b16573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b3f9190613cb2565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a81604051611b76919061202d565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611bdf929190613460565b602060405180830381865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c209190612f1b565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b8152600401611c8f9796959493929190613feb565b600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611d2b929190613b7b565b600060405180830381865afa158015611d48573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d71919061404b565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e275750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d9061412c565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7857806003600060046000815480929190611ecf9061414c565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611f95611ff2565b8152602001611fa2611ff2565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b61202781612014565b82525050565b6000602082019050612042600083018461201e565b92915050565b6000604051905090565b600080fd5b600080fd5b61206581612014565b811461207057600080fd5b50565b6000813590506120828161205c565b92915050565b60006020828403121561209e5761209d612052565b5b60006120ac84828501612073565b91505092915050565b60008115159050919050565b6120ca816120b5565b82525050565b60006020820190506120e560008301846120c1565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612116826120eb565b9050919050565b6121268161210b565b811461213157600080fd5b50565b6000813590506121438161211d565b92915050565b612152816120b5565b811461215d57600080fd5b50565b60008135905061216f81612149565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261219a57612199612175565b5b8235905067ffffffffffffffff8111156121b7576121b661217a565b5b6020830191508360018202830111156121d3576121d261217f565b5b9250929050565b600080600080600080600060c0888a0312156121f9576121f8612052565b5b60006122078a828b01612134565b97505060206122188a828b01612160565b96505060406122298a828b01612160565b955050606061223a8a828b01612073565b945050608061224b8a828b01612073565b93505060a088013567ffffffffffffffff81111561226c5761226b612057565b5b6122788a828b01612184565b925092505092959891949750929550565b6000806000606084860312156122a2576122a1612052565b5b60006122b086828701612073565b93505060206122c186828701612073565b92505060406122d286828701612160565b9150509250925092565b600080604083850312156122f3576122f2612052565b5b600061230185828601612134565b925050602061231285828601612073565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561235657808201518184015260208101905061233b565b60008484015250505050565b6000601f19601f8301169050919050565b600061237e8261231c565b6123888185612327565b9350612398818560208601612338565b6123a181612362565b840191505092915050565b600060208201905081810360008301526123c68184612373565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61240b82612362565b810181811067ffffffffffffffff8211171561242a576124296123d3565b5b80604052505050565b600061243d612048565b90506124498282612402565b919050565b600067ffffffffffffffff821115612469576124686123d3565b5b61247282612362565b9050602081019050919050565b82818337600083830152505050565b60006124a161249c8461244e565b612433565b9050828152602081018484840111156124bd576124bc6123ce565b5b6124c884828561247f565b509392505050565b600082601f8301126124e5576124e4612175565b5b81356124f584826020860161248e565b91505092915050565b60006020828403121561251457612513612052565b5b600082013567ffffffffffffffff81111561253257612531612057565b5b61253e848285016124d0565b91505092915050565b6125508161210b565b82525050565b600060208201905061256b6000830184612547565b92915050565b60008060006060848603121561258a57612589612052565b5b600061259886828701612134565b93505060206125a986828701612134565b92505060406125ba86828701612073565b9150509250925092565b6000602082840312156125da576125d9612052565b5b60006125e884828501612134565b91505092915050565b60008060006060848603121561260a57612609612052565b5b600061261886828701612073565b935050602061262986828701612160565b925050604061263a86828701612160565b9150509250925092565b60008060006060848603121561265d5761265c612052565b5b600061266b86828701612134565b935050602061267c86828701612073565b925050604061268d86828701612073565b9150509250925092565b600080600080608085870312156126b1576126b0612052565b5b60006126bf87828801612073565b94505060206126d087828801612134565b93505060406126e187828801612073565b92505060606126f287828801612160565b91505092959194509250565b60008083601f84011261271457612713612175565b5b8235905067ffffffffffffffff8111156127315761273061217a565b5b60208301915083600182028301111561274d5761274c61217f565b5b9250929050565b6000819050826020600202820111156127705761276f61217f565b5b92915050565b6000806000806000806000806000806101408b8d03121561279a57612799612052565b5b60008b013567ffffffffffffffff8111156127b8576127b7612057565b5b6127c48d828e016126fe565b9a509a505060206127d78d828e01612073565b98505060406127e88d828e01612754565b97505060806127f98d828e01612754565b96505060c061280a8d828e01612073565b95505060e061281b8d828e01612160565b94505061010061282d8d828e01612160565b9350506101208b013567ffffffffffffffff81111561284f5761284e612057565b5b61285b8d828e01612184565b92509250509295989b9194979a5092959850565b6000819050919050565b6128828161286f565b811461288d57600080fd5b50565b60008135905061289f81612879565b92915050565b600080604083850312156128bc576128bb612052565b5b600083013567ffffffffffffffff8111156128da576128d9612057565b5b6128e6858286016124d0565b92505060206128f785828601612890565b9150509250929050565b61290a81612014565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061293c8383612901565b60208301905092915050565b6000602082019050919050565b61295e81612910565b612968818461291b565b925061297382612926565b8060005b838110156129a457815161298b8782612930565b965061299683612948565b925050600181019050612977565b505050505050565b6129b5816120b5565b82525050565b60e0820160008201516129d16000850182612901565b5060208201516129e46020850182612955565b5060408201516129f76060850182612955565b506060820151612a0a60a0850182612901565b506080820151612a1d60c08501826129ac565b50505050565b600082825260208201905092915050565b6000612a3f8261231c565b612a498185612a23565b9350612a59818560208601612338565b612a6281612362565b840191505092915050565b600060c0830160008301518482036000860152612a8a8282612a34565b9150506020830151612a9f6020860182612901565b506040830151612ab26040860182612901565b506060830151612ac56060860182612901565b506080830151612ad860808601826129ac565b5060a0830151612aeb60a08601826129ac565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000612b1d82612af6565b612b278185612b01565b9350612b37818560208601612338565b612b4081612362565b840191505092915050565b60006101a082019050612b61600083018a61201e565b612b6e6020830189612547565b612b7b604083018861201e565b612b8860608301876129bb565b818103610140830152612b9b8186612a6d565b9050612bab6101608301856120c1565b818103610180830152612bbe8184612b12565b905098975050505050505050565b60008060208385031215612be357612be2612052565b5b600083013567ffffffffffffffff811115612c0157612c00612057565b5b612c0d858286016126fe565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c4e8161210b565b82525050565b604082016000820151612c6a6000850182612901565b506020820151612c7d6020850182612c45565b50505050565b6000612c8f8383612c54565b60408301905092915050565b6000602082019050919050565b6000612cb382612c19565b612cbd8185612c24565b9350612cc883612c35565b8060005b83811015612cf9578151612ce08882612c83565b9750612ceb83612c9b565b925050600181019050612ccc565b5085935050505092915050565b60006020820190508181036000830152612d208184612ca8565b905092915050565b60008060408385031215612d3f57612d3e612052565b5b6000612d4d85828601612134565b9250506020612d5e85828601612134565b9150509250929050565b60008083601f840112612d7e57612d7d612175565b5b8235905067ffffffffffffffff811115612d9b57612d9a61217a565b5b602083019150836040820283011115612db757612db661217f565b5b9250929050565b60008083601f840112612dd457612dd3612175565b5b8235905067ffffffffffffffff811115612df157612df061217a565b5b602083019150836020820283011115612e0d57612e0c61217f565b5b9250929050565b60008060008060008060608789031215612e3157612e30612052565b5b600087013567ffffffffffffffff811115612e4f57612e4e612057565b5b612e5b89828a01612d68565b9650965050602087013567ffffffffffffffff811115612e7e57612e7d612057565b5b612e8a89828a016126fe565b9450945050604087013567ffffffffffffffff811115612ead57612eac612057565b5b612eb989828a01612dbe565b92509250509295509295509295565b60006060820190508181036000830152612ee28186612373565b9050612ef16020830185612547565b612efe604083018461201e565b949350505050565b600081519050612f158161205c565b92915050565b600060208284031215612f3157612f30612052565b5b6000612f3f84828501612f06565b91505092915050565b600081519050612f5781612149565b92915050565b600060208284031215612f7357612f72612052565b5b6000612f8184828501612f48565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612fe6602b83612327565b9150612ff182612f8a565b604082019050919050565b6000602082019050818103600083015261301581612fd9565b9050919050565b60006130288385612b01565b935061303583858461247f565b61303e83612362565b840190509392505050565b600060a08201905061305e60008301896120c1565b61306b60208301886120c1565b613078604083018761201e565b613085606083018661201e565b818103608083015261309881848661301c565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130df82612014565b91506130ea83612014565b9250828203905081811115613102576131016130a5565b5b92915050565b600061311382612014565b915061311e83612014565b925082820261312c81612014565b91508282048414831517613143576131426130a5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061318482612014565b915061318f83612014565b92508261319f5761319e61314a565b5b828204905092915050565b60006131b582612014565b91506131c083612014565b92508282019050808211156131d8576131d76130a5565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b600061323a602783612327565b9150613245826131de565b604082019050919050565b600060208201905081810360008301526132698161322d565b9050919050565b6000608082019050613285600083018761201e565b6132926020830186612547565b61329f604083018561201e565b6132ac60608301846120c1565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b6000613311602583612327565b915061331c826132b5565b604082019050919050565b6000602082019050818103600083015261334081613304565b9050919050565b600060408201905061335c6000830185612547565b613369602083018461201e565b9392505050565b600061338361337e8461244e565b612433565b90508281526020810184848401111561339f5761339e6123ce565b5b6133aa848285612338565b509392505050565b600082601f8301126133c7576133c6612175565b5b81516133d7848260208601613370565b91505092915050565b6000602082840312156133f6576133f5612052565b5b600082015167ffffffffffffffff81111561341457613413612057565b5b613420848285016133b2565b91505092915050565b600060608201905061343e6000830186612547565b61344b6020830185612547565b613458604083018461201e565b949350505050565b60006040820190506134756000830185612547565b6134826020830184612547565b9392505050565b600060608201905061349e600083018661201e565b6134ab60208301856120c1565b6134b860408301846120c1565b949350505050565b60006060820190506134d56000830186612547565b6134e2602083018561201e565b6134ef604083018461201e565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b6000613553602783612327565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602583612327565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b60006136278385612327565b935061363483858461247f565b61363d83612362565b840190509392505050565b82818337505050565b61365d60408383613648565b5050565b600061016082019050613677600083018e612547565b818103602083015261368a818c8e61361b565b9050613699604083018b61201e565b6136a6606083018a613651565b6136b360a0830189613651565b6136c060e083018861201e565b6136ce6101008301876120c1565b6136dc6101208301866120c1565b8181036101408301526136f081848661301c565b90509c9b505050505050505050505050565b61370b8161286f565b82525050565b6000819050919050565b6000819050919050565b600061374061373b61373684613711565b61371b565b612014565b9050919050565b61375081613725565b82525050565b600060808201905081810360008301526137708187612373565b905061377f6020830186613702565b61378c60408301856120c1565b6137996060830184613747565b95945050505050565b6000815190506137b181612879565b92915050565b6000602082840312156137cd576137cc612052565b5b60006137db848285016137a2565b91505092915050565b6000815190506137f38161211d565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff82111561381e5761381d6123d3565b5b602082029050919050565b600061383c61383784613803565b612433565b905080602084028301858111156138565761385561217f565b5b835b8181101561387f578061386b8882612f06565b845260208401935050602081019050613858565b5050509392505050565b600082601f83011261389e5761389d612175565b5b60026138ab848285613829565b91505092915050565b600060e082840312156138ca576138c96137f9565b5b6138d460a0612433565b905060006138e484828501612f06565b60008301525060206138f884828501613889565b602083015250606061390c84828501613889565b60408301525060a061392084828501612f06565b60608301525060c061393484828501612f48565b60808301525092915050565b600060c08284031215613956576139556137f9565b5b61396060c0612433565b9050600082015167ffffffffffffffff8111156139805761397f6137fe565b5b61398c848285016133b2565b60008301525060206139a084828501612f06565b60208301525060406139b484828501612f06565b60408301525060606139c884828501612f06565b60608301525060806139dc84828501612f48565b60808301525060a06139f084828501612f48565b60a08301525092915050565b600067ffffffffffffffff821115613a1757613a166123d3565b5b613a2082612362565b9050602081019050919050565b6000613a40613a3b846139fc565b612433565b905082815260208101848484011115613a5c57613a5b6123ce565b5b613a67848285612338565b509392505050565b600082601f830112613a8457613a83612175565b5b8151613a94848260208601613a2d565b91505092915050565b60008060008060008060006101a0888a031215613abd57613abc612052565b5b6000613acb8a828b01612f06565b9750506020613adc8a828b016137e4565b9650506040613aed8a828b01612f06565b9550506060613afe8a828b016138b4565b94505061014088015167ffffffffffffffff811115613b2057613b1f612057565b5b613b2c8a828b01613940565b935050610160613b3e8a828b01612f48565b92505061018088015167ffffffffffffffff811115613b6057613b5f612057565b5b613b6c8a828b01613a6f565b91505092959891949750929550565b60006020820190508181036000830152613b9681848661361b565b90509392505050565b600067ffffffffffffffff821115613bba57613bb96123d3565b5b602082029050602081019050919050565b600060408284031215613be157613be06137f9565b5b613beb6040612433565b90506000613bfb84828501612f06565b6000830152506020613c0f848285016137e4565b60208301525092915050565b6000613c2e613c2984613b9f565b612433565b90508083825260208201905060408402830185811115613c5157613c5061217f565b5b835b81811015613c7a5780613c668882613bcb565b845260208401935050604081019050613c53565b5050509392505050565b600082601f830112613c9957613c98612175565b5b8151613ca9848260208601613c1b565b91505092915050565b600060208284031215613cc857613cc7612052565b5b600082015167ffffffffffffffff811115613ce657613ce5612057565b5b613cf284828501613c84565b91505092915050565b6000819050919050565b6000613d146020840184612073565b905092915050565b6000613d2b6020840184612134565b905092915050565b60408201613d446000830183613d05565b613d516000850182612901565b50613d5f6020830183613d1c565b613d6c6020850182612c45565b50505050565b6000613d7e8383613d33565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613dae8385612c24565b9350613db982613cfb565b8060005b85811015613df257613dcf8284613d8a565b613dd98882613d72565b9750613de483613d95565b925050600181019050613dbd565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613e296020840184612890565b905092915050565b613e3a8161286f565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613e6c57613e6b613e4a565b5b83810192508235915060208301925067ffffffffffffffff821115613e9457613e93613e40565b5b600182023603831315613eaa57613ea9613e45565b5b509250929050565b6000613ebe8385612a23565b9350613ecb83858461247f565b613ed483612362565b840190509392505050565b600060408301613ef26000840184613e1a565b613eff6000860182613e31565b50613f0d6020840184613e4f565b8583036020870152613f20838284613eb2565b925050508091505092915050565b6000613f3a8383613edf565b905092915050565b600082356001604003833603038112613f5e57613f5d613e4a565b5b82810191505092915050565b6000602082019050919050565b6000613f838385613dff565b935083602084028501613f9584613e10565b8060005b87811015613fd9578484038952613fb08284613f42565b613fba8582613f2e565b9450613fc583613f6a565b925060208a01995050600181019050613f99565b50829750879450505050509392505050565b6000608082019050614000600083018a612547565b818103602083015261401381888a613da2565b9050818103604083015261402881868861361b565b9050818103606083015261403d818486613f77565b905098975050505050505050565b60008060006060848603121561406457614063612052565b5b600084015167ffffffffffffffff81111561408257614081612057565b5b61408e868287016133b2565b935050602061409f868287016137e4565b92505060406140b086828701612f06565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000614116602f83612327565b9150614121826140ba565b604082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b600061415782612014565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614189576141886130a5565b5b60018201905091905056fea2646970667358221220db7b29b9eaa425c3c4725eedbd8e746c85af6985f08a87bd2492b1a791b18a0c64736f6c63430008180033",
"deployedBytecode": "0x6080604052600436106101c25760003560e01c806378e21c6e116100f7578063a230c52411610095578063dd62ed3e11610064578063dd62ed3e1461065e578063e5b4d8271461069b578063f8300fca146106c4578063fcb4888e14610703576101c2565b8063a230c52414610578578063a2336279146105b5578063da66863a146105f8578063dc00bbfe14610635576101c2565b8063975762b3116100d1578063975762b3146104cd5780639dc29fac146104f65780639fbe7c731461051f5780639fd098721461054f576101c2565b806378e21c6e1461043e57806388380274146104675780638ce516da146104a4576101c2565b806340c10f19116101645780635daf08ca1161013e5780635daf08ca146103705780635ffc7004146103ad578063642b5bfb146103d657806370a0823114610401576101c2565b806340c10f19146102e157806350cde8ef1461030a5780635c253c0b14610347576101c2565b806318160ddd116101a057806318160ddd1461025a5780631d0d37c9146102855780631e57e078146102ae5780632d17c062146102b8576101c2565b806311aee380146101c757806317906c2e146101f257806317c182171461021d575b600080fd5b3480156101d357600080fd5b506101dc61072c565b6040516101e9919061202d565b60405180910390f35b3480156101fe57600080fd5b50610207610732565b604051610214919061202d565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190612088565b6107ca565b60405161025191906120d0565b60405180910390f35b34801561026657600080fd5b5061026f610871565b60405161027c919061202d565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a791906121da565b610908565b005b6102b6610a6e565b005b3480156102c457600080fd5b506102df60048036038101906102da9190612289565b610b74565b005b3480156102ed57600080fd5b50610308600480360381019061030391906122dc565b610c57565b005b34801561031657600080fd5b50610331600480360381019061032c9190612088565b610dd0565b60405161033e91906123ac565b60405180910390f35b34801561035357600080fd5b5061036e600480360381019061036991906124fe565b610e7a565b005b34801561037c57600080fd5b5061039760048036038101906103929190612088565b610eb4565b6040516103a49190612556565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190612571565b610ee7565b005b3480156103e257600080fd5b506103eb6110b0565b6040516103f8919061202d565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906125c4565b611148565b604051610435919061202d565b60405180910390f35b34801561044a57600080fd5b50610465600480360381019061046091906125f1565b6111ec565b005b34801561047357600080fd5b5061048e60048036038101906104899190612644565b61122c565b60405161049b91906120d0565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612571565b6113fd565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190612697565b611579565b005b34801561050257600080fd5b5061051d600480360381019061051891906122dc565b6116bf565b005b61053960048036038101906105349190612776565b611838565b604051610546919061202d565b60405180910390f35b34801561055b57600080fd5b50610576600480360381019061057191906128a5565b6118fd565b005b34801561058457600080fd5b5061059f600480360381019061059a91906125c4565b6119a7565b6040516105ac91906120d0565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612088565b6119c7565b6040516105ef9796959493929190612b4b565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190612bcc565b611a9a565b60405161062c9190612d06565b60405180910390f35b34801561064157600080fd5b5061065c60048036038101906106579190612088565b611b47565b005b34801561066a57600080fd5b5061068560048036038101906106809190612d28565b611b81565b604051610692919061202d565b60405180910390f35b3480156106a757600080fd5b506106c260048036038101906106bd9190612e14565b611c28565b005b3480156106d057600080fd5b506106eb60048036038101906106e69190612bcc565b611cc9565b6040516106fa93929190612ec8565b60405180910390f35b34801561070f57600080fd5b5061072a600480360381019061072591906125c4565b611d7e565b005b60045481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317906c2e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c59190612f1b565b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317c18217836040518263ffffffff1660e01b8152600401610827919061202d565b6020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612f5d565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109039190612f1b565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109b15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e790612ffc565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663b4e6a1d58787878787876040518763ffffffff1660e01b8152600401610a3396959493929190613049565b600060405180830381600087803b158015610a4d57600080fd5b505af1158015610a61573d6000803e3d6000fd5b5050505050505050505050565b600080600090505b600454811015610b705760006003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006001600454610ac991906130d4565b831015610b0b57610ad8610871565b610ae183611148565b34610aec9190613108565b610af69190613179565b90508084610b0491906131aa565b9350610b1a565b8334610b1791906130d4565b90505b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b60573d6000803e3d6000fd5b5050508080600101915050610a76565b5050565b81610b7e33611148565b1015610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb690613250565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961843385856040518563ffffffff1660e01b8152600401610c209493929190613270565b600060405180830381600087803b158015610c3a57600080fd5b505af1158015610c4e573d6000803e3d6000fd5b50505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d005750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690613327565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401610d9a929190613347565b600060405180830381600087803b158015610db457600080fd5b505af1158015610dc8573d6000803e3d6000fd5b505050505050565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350cde8ef836040518263ffffffff1660e01b8152600401610e2d919061202d565b600060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e7391906133e0565b9050919050565b7fbd6277baf8ced6ab6543a1aef164635fc2bde1ba962d39d8a0fd81a5af24972781604051610ea991906123ac565b60405180910390a150565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433846040518463ffffffff1660e01b8152600401610f4493929190613429565b600060405180830381600087803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c6784848460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e89896040518363ffffffff1660e01b8152600401611010929190613460565b602060405180830381865afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190612f1b565b61105b91906131aa565b6040518463ffffffff1660e01b815260040161107993929190613429565b600060405180830381600087803b15801561109357600080fd5b505af11580156110a7573d6000803e3d6000fd5b50505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663642b5bfb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190612f1b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016111a49190612556565b602060405180830381865afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190612f1b565b9050919050565b7fae8941f3b4d152118273444f36b8b5642e5602102b789968bd4b7cf8b250de8183838360405161121f93929190613489565b60405180910390a1505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663216ed6ad3386866040518463ffffffff1660e01b815260040161126c939291906134c0565b6020604051808303816000875af115801561128b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112af9190612f1b565b905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1f21c673387848860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e338d6040518363ffffffff1660e01b815260040161134c929190613460565b602060405180830381865afa158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d9190612f1b565b61139791906131aa565b6113a191906130d4565b6040518463ffffffff1660e01b81526004016113bf93929190613429565b600060405180830381600087803b1580156113d957600080fd5b505af11580156113ed573d6000803e3d6000fd5b5050505060019150509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806114a65750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90613569565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ce516da8484846040518463ffffffff1660e01b815260040161154293929190613429565b600060405180830381600087803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b50505050505050565b816115848433611b81565b1015611597576115948333611b81565b91505b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd8aaa4f8433856040518463ffffffff1660e01b81526004016115f493929190613429565b600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663217c1961858585856040518563ffffffff1660e01b81526004016116879493929190613270565b600060405180830381600087803b1580156116a157600080fd5b505af11580156116b5573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117685750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e906135fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac83836040518363ffffffff1660e01b8152600401611802929190613347565b600060405180830381600087803b15801561181c57600080fd5b505af1158015611830573d6000803e3d6000fd5b505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1a38bf934338e8e8e8e8e8e8e8e8e8e6040518d63ffffffff1660e01b81526004016118aa9b9a99989796959493929190613661565b60206040518083038185885af11580156118c8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118ed9190612f1b565b90509a9950505050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e19f2483836000806040518563ffffffff1660e01b815260040161195f9493929190613756565b6020604051808303816000875af115801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a291906137b7565b505050565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060006119d4611f7b565b6119dc611fb8565b60006060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2336279896040518263ffffffff1660e01b8152600401611a3b919061202d565b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611a819190613a9d565b9650965096509650965096509650919395979092949650565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da66863a84846040518363ffffffff1660e01b8152600401611af9929190613b7b565b600060405180830381865afa158015611b16573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b3f9190613cb2565b905092915050565b7f6e5c598b821d7fa8550e5fea58ab6e27c59e1cbe1df75a8591aa0c453b49e10a81604051611b76919061202d565b60405180910390a150565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b8152600401611bdf929190613460565b602060405180830381865afa158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c209190612f1b565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b96129b338888888888886040518863ffffffff1660e01b8152600401611c8f9796959493929190613feb565b600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b50505050505050505050565b6060600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8300fca86866040518363ffffffff1660e01b8152600401611d2b929190613b7b565b600060405180830381865afa158015611d48573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d71919061404b565b9250925092509250925092565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e275750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d9061412c565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7857806003600060046000815480929190611ecf9061414c565b91905055815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b50565b6040518060a0016040528060008152602001611f95611ff2565b8152602001611fa2611ff2565b8152602001600081526020016000151581525090565b6040518060c00160405280606081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b6040518060400160405280600290602082028036833780820191505090505090565b6000819050919050565b61202781612014565b82525050565b6000602082019050612042600083018461201e565b92915050565b6000604051905090565b600080fd5b600080fd5b61206581612014565b811461207057600080fd5b50565b6000813590506120828161205c565b92915050565b60006020828403121561209e5761209d612052565b5b60006120ac84828501612073565b91505092915050565b60008115159050919050565b6120ca816120b5565b82525050565b60006020820190506120e560008301846120c1565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612116826120eb565b9050919050565b6121268161210b565b811461213157600080fd5b50565b6000813590506121438161211d565b92915050565b612152816120b5565b811461215d57600080fd5b50565b60008135905061216f81612149565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261219a57612199612175565b5b8235905067ffffffffffffffff8111156121b7576121b661217a565b5b6020830191508360018202830111156121d3576121d261217f565b5b9250929050565b600080600080600080600060c0888a0312156121f9576121f8612052565b5b60006122078a828b01612134565b97505060206122188a828b01612160565b96505060406122298a828b01612160565b955050606061223a8a828b01612073565b945050608061224b8a828b01612073565b93505060a088013567ffffffffffffffff81111561226c5761226b612057565b5b6122788a828b01612184565b925092505092959891949750929550565b6000806000606084860312156122a2576122a1612052565b5b60006122b086828701612073565b93505060206122c186828701612073565b92505060406122d286828701612160565b9150509250925092565b600080604083850312156122f3576122f2612052565b5b600061230185828601612134565b925050602061231285828601612073565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561235657808201518184015260208101905061233b565b60008484015250505050565b6000601f19601f8301169050919050565b600061237e8261231c565b6123888185612327565b9350612398818560208601612338565b6123a181612362565b840191505092915050565b600060208201905081810360008301526123c68184612373565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61240b82612362565b810181811067ffffffffffffffff8211171561242a576124296123d3565b5b80604052505050565b600061243d612048565b90506124498282612402565b919050565b600067ffffffffffffffff821115612469576124686123d3565b5b61247282612362565b9050602081019050919050565b82818337600083830152505050565b60006124a161249c8461244e565b612433565b9050828152602081018484840111156124bd576124bc6123ce565b5b6124c884828561247f565b509392505050565b600082601f8301126124e5576124e4612175565b5b81356124f584826020860161248e565b91505092915050565b60006020828403121561251457612513612052565b5b600082013567ffffffffffffffff81111561253257612531612057565b5b61253e848285016124d0565b91505092915050565b6125508161210b565b82525050565b600060208201905061256b6000830184612547565b92915050565b60008060006060848603121561258a57612589612052565b5b600061259886828701612134565b93505060206125a986828701612134565b92505060406125ba86828701612073565b9150509250925092565b6000602082840312156125da576125d9612052565b5b60006125e884828501612134565b91505092915050565b60008060006060848603121561260a57612609612052565b5b600061261886828701612073565b935050602061262986828701612160565b925050604061263a86828701612160565b9150509250925092565b60008060006060848603121561265d5761265c612052565b5b600061266b86828701612134565b935050602061267c86828701612073565b925050604061268d86828701612073565b9150509250925092565b600080600080608085870312156126b1576126b0612052565b5b60006126bf87828801612073565b94505060206126d087828801612134565b93505060406126e187828801612073565b92505060606126f287828801612160565b91505092959194509250565b60008083601f84011261271457612713612175565b5b8235905067ffffffffffffffff8111156127315761273061217a565b5b60208301915083600182028301111561274d5761274c61217f565b5b9250929050565b6000819050826020600202820111156127705761276f61217f565b5b92915050565b6000806000806000806000806000806101408b8d03121561279a57612799612052565b5b60008b013567ffffffffffffffff8111156127b8576127b7612057565b5b6127c48d828e016126fe565b9a509a505060206127d78d828e01612073565b98505060406127e88d828e01612754565b97505060806127f98d828e01612754565b96505060c061280a8d828e01612073565b95505060e061281b8d828e01612160565b94505061010061282d8d828e01612160565b9350506101208b013567ffffffffffffffff81111561284f5761284e612057565b5b61285b8d828e01612184565b92509250509295989b9194979a5092959850565b6000819050919050565b6128828161286f565b811461288d57600080fd5b50565b60008135905061289f81612879565b92915050565b600080604083850312156128bc576128bb612052565b5b600083013567ffffffffffffffff8111156128da576128d9612057565b5b6128e6858286016124d0565b92505060206128f785828601612890565b9150509250929050565b61290a81612014565b82525050565b600060029050919050565b600081905092915050565b6000819050919050565b600061293c8383612901565b60208301905092915050565b6000602082019050919050565b61295e81612910565b612968818461291b565b925061297382612926565b8060005b838110156129a457815161298b8782612930565b965061299683612948565b925050600181019050612977565b505050505050565b6129b5816120b5565b82525050565b60e0820160008201516129d16000850182612901565b5060208201516129e46020850182612955565b5060408201516129f76060850182612955565b506060820151612a0a60a0850182612901565b506080820151612a1d60c08501826129ac565b50505050565b600082825260208201905092915050565b6000612a3f8261231c565b612a498185612a23565b9350612a59818560208601612338565b612a6281612362565b840191505092915050565b600060c0830160008301518482036000860152612a8a8282612a34565b9150506020830151612a9f6020860182612901565b506040830151612ab26040860182612901565b506060830151612ac56060860182612901565b506080830151612ad860808601826129ac565b5060a0830151612aeb60a08601826129ac565b508091505092915050565b600081519050919050565b600082825260208201905092915050565b6000612b1d82612af6565b612b278185612b01565b9350612b37818560208601612338565b612b4081612362565b840191505092915050565b60006101a082019050612b61600083018a61201e565b612b6e6020830189612547565b612b7b604083018861201e565b612b8860608301876129bb565b818103610140830152612b9b8186612a6d565b9050612bab6101608301856120c1565b818103610180830152612bbe8184612b12565b905098975050505050505050565b60008060208385031215612be357612be2612052565b5b600083013567ffffffffffffffff811115612c0157612c00612057565b5b612c0d858286016126fe565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c4e8161210b565b82525050565b604082016000820151612c6a6000850182612901565b506020820151612c7d6020850182612c45565b50505050565b6000612c8f8383612c54565b60408301905092915050565b6000602082019050919050565b6000612cb382612c19565b612cbd8185612c24565b9350612cc883612c35565b8060005b83811015612cf9578151612ce08882612c83565b9750612ceb83612c9b565b925050600181019050612ccc565b5085935050505092915050565b60006020820190508181036000830152612d208184612ca8565b905092915050565b60008060408385031215612d3f57612d3e612052565b5b6000612d4d85828601612134565b9250506020612d5e85828601612134565b9150509250929050565b60008083601f840112612d7e57612d7d612175565b5b8235905067ffffffffffffffff811115612d9b57612d9a61217a565b5b602083019150836040820283011115612db757612db661217f565b5b9250929050565b60008083601f840112612dd457612dd3612175565b5b8235905067ffffffffffffffff811115612df157612df061217a565b5b602083019150836020820283011115612e0d57612e0c61217f565b5b9250929050565b60008060008060008060608789031215612e3157612e30612052565b5b600087013567ffffffffffffffff811115612e4f57612e4e612057565b5b612e5b89828a01612d68565b9650965050602087013567ffffffffffffffff811115612e7e57612e7d612057565b5b612e8a89828a016126fe565b9450945050604087013567ffffffffffffffff811115612ead57612eac612057565b5b612eb989828a01612dbe565b92509250509295509295509295565b60006060820190508181036000830152612ee28186612373565b9050612ef16020830185612547565b612efe604083018461201e565b949350505050565b600081519050612f158161205c565b92915050565b600060208284031215612f3157612f30612052565b5b6000612f3f84828501612f06565b91505092915050565b600081519050612f5781612149565b92915050565b600060208284031215612f7357612f72612052565b5b6000612f8184828501612f48565b91505092915050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206f6e56616c6964617465000000000000000000000000000000000000000000602082015250565b6000612fe6602b83612327565b9150612ff182612f8a565b604082019050919050565b6000602082019050818103600083015261301581612fd9565b9050919050565b60006130288385612b01565b935061303583858461247f565b61303e83612362565b840190509392505050565b600060a08201905061305e60008301896120c1565b61306b60208301886120c1565b613078604083018761201e565b613085606083018661201e565b818103608083015261309881848661301c565b9050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130df82612014565b91506130ea83612014565b9250828203905081811115613102576131016130a5565b5b92915050565b600061311382612014565b915061311e83612014565b925082820261312c81612014565b91508282048414831517613143576131426130a5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061318482612014565b915061318f83612014565b92508261319f5761319e61314a565b5b828204905092915050565b60006131b582612014565b91506131c083612014565b92508282019050808211156131d8576131d76130a5565b5b92915050565b7f496e73756666696369656e74205245502062616c616e636520746f20636f766560008201527f72207374616b6500000000000000000000000000000000000000000000000000602082015250565b600061323a602783612327565b9150613245826131de565b604082019050919050565b600060208201905081810360008301526132698161322d565b9050919050565b6000608082019050613285600083018761201e565b6132926020830186612547565b61329f604083018561201e565b6132ac60608301846120c1565b95945050505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206d696e74000000000000000000000000000000000000000000000000000000602082015250565b6000613311602583612327565b915061331c826132b5565b604082019050919050565b6000602082019050818103600083015261334081613304565b9050919050565b600060408201905061335c6000830185612547565b613369602083018461201e565b9392505050565b600061338361337e8461244e565b612433565b90508281526020810184848401111561339f5761339e6123ce565b5b6133aa848285612338565b509392505050565b600082601f8301126133c7576133c6612175565b5b81516133d7848260208601613370565b91505092915050565b6000602082840312156133f6576133f5612052565b5b600082015167ffffffffffffffff81111561341457613413612057565b5b613420848285016133b2565b91505092915050565b600060608201905061343e6000830186612547565b61344b6020830185612547565b613458604083018461201e565b949350505050565b60006040820190506134756000830185612547565b6134826020830184612547565b9392505050565b600060608201905061349e600083018661201e565b6134ab60208301856120c1565b6134b860408301846120c1565b949350505050565b60006060820190506134d56000830186612547565b6134e2602083018561201e565b6134ef604083018461201e565b949350505050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2075706461746500000000000000000000000000000000000000000000000000602082015250565b6000613553602783612327565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f206275726e000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602583612327565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b60006136278385612327565b935061363483858461247f565b61363d83612362565b840190509392505050565b82818337505050565b61365d60408383613648565b5050565b600061016082019050613677600083018e612547565b818103602083015261368a818c8e61361b565b9050613699604083018b61201e565b6136a6606083018a613651565b6136b360a0830189613651565b6136c060e083018861201e565b6136ce6101008301876120c1565b6136dc6101208301866120c1565b8181036101408301526136f081848661301c565b90509c9b505050505050505050505050565b61370b8161286f565b82525050565b6000819050919050565b6000819050919050565b600061374061373b61373684613711565b61371b565b612014565b9050919050565b61375081613725565b82525050565b600060808201905081810360008301526137708187612373565b905061377f6020830186613702565b61378c60408301856120c1565b6137996060830184613747565b95945050505050565b6000815190506137b181612879565b92915050565b6000602082840312156137cd576137cc612052565b5b60006137db848285016137a2565b91505092915050565b6000815190506137f38161211d565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff82111561381e5761381d6123d3565b5b602082029050919050565b600061383c61383784613803565b612433565b905080602084028301858111156138565761385561217f565b5b835b8181101561387f578061386b8882612f06565b845260208401935050602081019050613858565b5050509392505050565b600082601f83011261389e5761389d612175565b5b60026138ab848285613829565b91505092915050565b600060e082840312156138ca576138c96137f9565b5b6138d460a0612433565b905060006138e484828501612f06565b60008301525060206138f884828501613889565b602083015250606061390c84828501613889565b60408301525060a061392084828501612f06565b60608301525060c061393484828501612f48565b60808301525092915050565b600060c08284031215613956576139556137f9565b5b61396060c0612433565b9050600082015167ffffffffffffffff8111156139805761397f6137fe565b5b61398c848285016133b2565b60008301525060206139a084828501612f06565b60208301525060406139b484828501612f06565b60408301525060606139c884828501612f06565b60608301525060806139dc84828501612f48565b60808301525060a06139f084828501612f48565b60a08301525092915050565b600067ffffffffffffffff821115613a1757613a166123d3565b5b613a2082612362565b9050602081019050919050565b6000613a40613a3b846139fc565b612433565b905082815260208101848484011115613a5c57613a5b6123ce565b5b613a67848285612338565b509392505050565b600082601f830112613a8457613a83612175565b5b8151613a94848260208601613a2d565b91505092915050565b60008060008060008060006101a0888a031215613abd57613abc612052565b5b6000613acb8a828b01612f06565b9750506020613adc8a828b016137e4565b9650506040613aed8a828b01612f06565b9550506060613afe8a828b016138b4565b94505061014088015167ffffffffffffffff811115613b2057613b1f612057565b5b613b2c8a828b01613940565b935050610160613b3e8a828b01612f48565b92505061018088015167ffffffffffffffff811115613b6057613b5f612057565b5b613b6c8a828b01613a6f565b91505092959891949750929550565b60006020820190508181036000830152613b9681848661361b565b90509392505050565b600067ffffffffffffffff821115613bba57613bb96123d3565b5b602082029050602081019050919050565b600060408284031215613be157613be06137f9565b5b613beb6040612433565b90506000613bfb84828501612f06565b6000830152506020613c0f848285016137e4565b60208301525092915050565b6000613c2e613c2984613b9f565b612433565b90508083825260208201905060408402830185811115613c5157613c5061217f565b5b835b81811015613c7a5780613c668882613bcb565b845260208401935050604081019050613c53565b5050509392505050565b600082601f830112613c9957613c98612175565b5b8151613ca9848260208601613c1b565b91505092915050565b600060208284031215613cc857613cc7612052565b5b600082015167ffffffffffffffff811115613ce657613ce5612057565b5b613cf284828501613c84565b91505092915050565b6000819050919050565b6000613d146020840184612073565b905092915050565b6000613d2b6020840184612134565b905092915050565b60408201613d446000830183613d05565b613d516000850182612901565b50613d5f6020830183613d1c565b613d6c6020850182612c45565b50505050565b6000613d7e8383613d33565b60408301905092915050565b600082905092915050565b6000604082019050919050565b6000613dae8385612c24565b9350613db982613cfb565b8060005b85811015613df257613dcf8284613d8a565b613dd98882613d72565b9750613de483613d95565b925050600181019050613dbd565b5085925050509392505050565b600082825260208201905092915050565b6000819050919050565b6000613e296020840184612890565b905092915050565b613e3a8161286f565b82525050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613e6c57613e6b613e4a565b5b83810192508235915060208301925067ffffffffffffffff821115613e9457613e93613e40565b5b600182023603831315613eaa57613ea9613e45565b5b509250929050565b6000613ebe8385612a23565b9350613ecb83858461247f565b613ed483612362565b840190509392505050565b600060408301613ef26000840184613e1a565b613eff6000860182613e31565b50613f0d6020840184613e4f565b8583036020870152613f20838284613eb2565b925050508091505092915050565b6000613f3a8383613edf565b905092915050565b600082356001604003833603038112613f5e57613f5d613e4a565b5b82810191505092915050565b6000602082019050919050565b6000613f838385613dff565b935083602084028501613f9584613e10565b8060005b87811015613fd9578484038952613fb08284613f42565b613fba8582613f2e565b9450613fc583613f6a565b925060208a01995050600181019050613f99565b50829750879450505050509392505050565b6000608082019050614000600083018a612547565b818103602083015261401381888a613da2565b9050818103604083015261402881868861361b565b9050818103606083015261403d818486613f77565b905098975050505050505050565b60008060006060848603121561406457614063612052565b5b600084015167ffffffffffffffff81111561408257614081612057565b5b61408e868287016133b2565b935050602061409f868287016137e4565b92505060406140b086828701612f06565b9150509250925092565b7f4f6e6c792044414f20636f726520636f6e747261637473206d61792063616c6c60008201527f2072656769737465724d656d6265720000000000000000000000000000000000602082015250565b6000614116602f83612327565b9150614121826140ba565b604082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b600061415782612014565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614189576141886130a5565b5b60018201905091905056fea2646970667358221220db7b29b9eaa425c3c4725eedbd8e746c85af6985f08a87bd2492b1a791b18a0c64736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}