{
  "contractName": "JoinAndQuit",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "FundedBeforeDeadline",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_proposedMember",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_feeAmount",
          "type": "uint256"
        }
      ],
      "name": "JoinInProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "_decision",
          "type": "int256"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_rageQuitter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_refund",
          "type": "uint256"
        }
      ],
      "name": "RageQuit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "RedeemReputation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_refund",
          "type": "uint256"
        }
      ],
      "name": "Refund",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "FUNDED_BEFORE_DEADLINE_KEY",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FUNDED_BEFORE_DEADLINE_VALUE",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "balanceOfStakingToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "burnReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_decision",
          "type": "int256"
        }
      ],
      "name": "executeProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundingGoal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundingGoalDeadline",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fundingToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "fundings",
      "outputs": [
        {
          "internalType": "bool",
          "name": "candidate",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "rageQuit",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "funding",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getTotalReputationSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "contract IntVoteInterface",
          "name": "_votingMachine",
          "type": "address"
        },
        {
          "internalType": "uint256[11]",
          "name": "_votingParams",
          "type": "uint256[11]"
        },
        {
          "internalType": "address",
          "name": "_voteOnBehalf",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_voteParamsHash",
          "type": "bytes32"
        },
        {
          "internalType": "contract IERC20",
          "name": "_fundingToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_minFeeToJoin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_memberReputation",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fundingGoal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fundingGoalDeadline",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_rageQuitEnable",
          "type": "bool"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "memberReputation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minFeeToJoin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "mintReputation",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "internalType": "bool",
          "name": "accepted",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "proposedMember",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "funding",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_feeAmount",
          "type": "uint256"
        }
      ],
      "name": "proposeToJoin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rageQuit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "refundAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rageQuitEnable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "redeemReputation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reputation",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "refund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "refundAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "reputationOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setFundingGoalReachedFlag",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_stakingToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_beneficiary",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "stakingTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalDonation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "voteParamsHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "votingMachine",
      "outputs": [
        {
          "internalType": "contract IntVoteInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061357b806100206000396000f3fe6080604052600436106101b75760003560e01c806393df91a1116100ec578063bea75f281161008a578063e4392dbb11610064578063e4392dbb146106a9578063ee2ac05f146106be578063f00b03d2146106d3578063f81f8bf614610726576101b7565b8063bea75f28146105f7578063c7916cf914610640578063d29b5d2f1461066a576101b7565b80639a4f14bc116100c65780639a4f14bc1461055f5780639d4c162d14610588578063b0ccbf8c146105b8578063b551c373146105cd576101b7565b806393df91a1146104875780639537ba0c1461049c5780639588378e14610526576101b7565b80635aef7de61161015957806378065f271161013357806378065f271461041e5780637a3a0e84146104335780637a5cb92c146104485780637ae5644a14610472576101b7565b80635aef7de6146103bb5780636b8eb403146103d05780637350dbd114610409576101b7565b80633edf7ca1116101955780633edf7ca11461034b57806345c3dffa1461037c5780634ea2c7ec14610391578063590e1ae3146103a6576101b7565b80630a1befb3146101bc578063187a9e4b1461023f57806332ed5b12146102f9575b600080fd5b3480156101c857600080fd5b5061023d60048036036102a08110156101e057600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0810135909116906102008101359061022081013590610240810135906102608101359061028001351515610765565b005b6102e76004803603604081101561025557600080fd5b81019060208101813564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506107e7915050565b60408051918252519081900360200190f35b34801561030557600080fd5b506103236004803603602081101561031c57600080fd5b5035610c23565b6040805193151584526001600160a01b03909216602084015282820152519081900360600190f35b34801561035757600080fd5b50610360610c50565b604080516001600160a01b039092168252519081900360200190f35b34801561038857600080fd5b506102e7610c5f565b34801561039d57600080fd5b506102e7610c65565b3480156103b257600080fd5b506102e7610c6b565b3480156103c757600080fd5b50610360610f90565b3480156103dc57600080fd5b506102e7600480360360408110156103f357600080fd5b506001600160a01b038135169060200135610f9f565b34801561041557600080fd5b5061023d611079565b34801561042a57600080fd5b50610360611499565b34801561043f57600080fd5b506102e76114a8565b34801561045457600080fd5b506102e76004803603602081101561046b57600080fd5b50356114ae565b34801561047e57600080fd5b506102e76114c0565b34801561049357600080fd5b506102e76114c6565b3480156104a857600080fd5b506104b16114cc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104eb5781810151838201526020016104d3565b50505050905090810190601f1680156105185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053257600080fd5b506102e76004803603604081101561054957600080fd5b506001600160a01b0381351690602001356114ec565b34801561056b57600080fd5b5061057461161d565b604080519115158252519081900360200190f35b34801561059457600080fd5b50610574600480360360408110156105ab57600080fd5b5080359060200135611626565b3480156105c457600080fd5b506102e7611abd565b3480156105d957600080fd5b506102e7600480360360208110156105f057600080fd5b5035611f1c565b34801561060357600080fd5b506105746004803603608081101561061a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612079565b34801561064c57600080fd5b506102e76004803603602081101561066357600080fd5b50356121dd565b34801561067657600080fd5b506105746004803603606081101561068d57600080fd5b508035906001600160a01b03602082013516906040013561250c565b3480156106b557600080fd5b506104b1612667565b3480156106ca57600080fd5b506102e7612699565b3480156106df57600080fd5b50610706600480360360208110156106f657600080fd5b50356001600160a01b031661269f565b604080519315158452911515602084015282820152519081900360600190f35b34801561073257600080fd5b506105746004803603606081101561074957600080fd5b508035906001600160a01b0360208201351690604001356126c5565b61079c8b8b898c600b806020026040519081016040528092919082600b602002808284376000920191909152508e91506127eb9050565b603980546001600160a01b0319166001600160a01b039790971696909617909555603a93909355603b91909155603c55603d55603f805460ff19169115159190911790555050505050565b3360008181526038602052604081205490919060ff1615610845576040805162461bcd60e51b8152602060048201526013602482015272616c726561647920612063616e64696461746560681b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561089357600080fd5b505afa1580156108a7573d6000803e3d6000fd5b505050506040513d60208110156108bd57600080fd5b5051604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561090957600080fd5b505afa15801561091d573d6000803e3d6000fd5b505050506040513d602081101561093357600080fd5b50511561097a576040805162461bcd60e51b815260206004820152601060248201526f30b63932b0b23c90309036b2b6b132b960811b604482015290519081900360640190fd5b603a548310156109bb5760405162461bcd60e51b815260040180806020018281038252602d81526020018061344c602d913960400191505060405180910390fd5b6001600160a01b038082166000908152603860205260409020805460ff1916600117905560395416610a2a57348314610a255760405162461bcd60e51b81526004018080602001828103825260278152602001806134256027913960400191505060405180910390fd5b610a48565b603954610a48906001600160a01b031682308663ffffffff612a6a16565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093526001600160a01b03858116604485015291821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b50519050610aeb613404565b50604080516060808201835260008083526001600160a01b0380871660208086018281528688018c815289865260378352888620885181549351871661010002610100600160a81b031991151560ff19909516949094171692909217825551600191909101556033548751808301939093529682018b90528482528b51948201949094528a51949587959216937fda76b8228e4eb3d710f6cddb20dccd29250b738750d145adb879de9bc87ab236938c938a938d939092839260808401928801918190849084905b83811015610bcb578181015183820152602001610bb3565b50505050905090810190601f168015610bf85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060008181526036602052604090204390559150505b92915050565b6037602052600090815260409020805460019091015460ff82169161010090046001600160a01b03169083565b6034546001600160a01b031681565b603a5481565b60355481565b6000603d544211610cad5760405162461bcd60e51b81526004018080602001828103825260298152602001806134f36029913960400191505060405180910390fd5b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051610e98966001600160a01b03909316946358cb548b949293839260449092019180838360005b83811015610d53578181015183820152602001610d3b565b50505050905090810190601f168015610d805780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610dda57600080fd5b8101908080516040519392919084640100000000821115610dfa57600080fd5b908301906020820185811115610e0f57600080fd5b8251640100000000811182820188101715610e2957600080fd5b82525081516020918201929091019080838360005b83811015610e56578181015183820152602001610e3e565b50505050905090810190601f168015610e835780820380516001836020036101000a031916815260200191505b50604052505050612aca90919063ffffffff16565b15610ed45760405162461bcd60e51b815260040180806020018281038252602b8152602001806134c8602b913960400191505060405180910390fd5b33600090815260386020526040902060010154610f2d576040805162461bcd60e51b81526020600482015260126024820152711b9bc8199d5b991cc81d1bc81c99599d5b9960721b604482015290519081900360640190fd5b50336000818152603860205260408120600101805491905590610f51908290612bc1565b603354604051829133916001600160a01b03909116907ff40cc8c1a1d17359049ba500cfc894596a692cffc9d03943cd92ec2e159cf6ae90600090a490565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610ff8576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b15801561104557600080fd5b505afa158015611059573d6000803e3d6000fd5b505050506040513d602081101561106f57600080fd5b5051949350505050565b6039546000906001600160a01b031661111757603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b50516001600160a01b0316319050611196565b603954603354604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d602081101561119157600080fd5b505190505b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051611239966001600160a01b03909316946358cb548b949293839260449092019180838360008315610d53578181015183820152602001610d3b565b1580156112485750603c548110155b80156112555750603d5442105b1561149657603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a857600080fd5b505afa1580156112bc573d6000803e3d6000fd5b505050506040513d60208110156112d257600080fd5b5051604080518082018252601681527546554e4445445f4245464f52455f444541444c494e4560501b6020828101918252835180850185526004808252635452554560e01b928201929092528451634e4e399360e11b81529182019485528351604483015283516001600160a01b0390961695639c9c732695919391928392602482019260649092019180838360005b8381101561137a578181015183820152602001611362565b50505050905090810190601f1680156113a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156113da5781810151838201526020016113c2565b50505050905090810190601f1680156114075780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561142857600080fd5b505af115801561143c573d6000803e3d6000fd5b505050506040513d602081101561145257600080fd5b505161145d57600080fd5b6033546040516001600160a01b03909116907f0640f71d45326639d6b83950c3933726d23f87a54e4a1853104d6f88e99c8aea90600090a25b50565b6039546001600160a01b031681565b603c5481565b60366020526000908152604090205481565b603d5481565b603b5481565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b03163314611545576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561159357600080fd5b505afa1580156115a7573d6000803e3d6000fd5b505050506040513d60208110156115bd57600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b15801561104557600080fd5b603f5460ff1681565b60345460009083906001600160a01b0316331461167f576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b60008481526037602052604090205460ff161561169b57600080fd5b60008481526037602052604090205461010090046001600160a01b03166116c157600080fd5b6116c9613404565b5060008481526037602090815260408083208151606081018352815460ff81161515825261010090046001600160a01b03169381019390935260019081015491830191909152909190851480156118105750603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561176957600080fd5b505afa15801561177d573d6000803e3d6000fd5b505050506040513d602081101561179357600080fd5b5051602083810151604080516370a0823160e01b81526001600160a01b039283166004820152905191909316926370a08231926024808301939192829003018186803b1580156117e257600080fd5b505afa1580156117f6573d6000803e3d6000fd5b505050506040513d602081101561180c57600080fd5b5051155b15611967576000868152603760205260409020805460ff191660011790556039546001600160a01b03166118f05760335460408084015190516001600160a01b0390921691600081818185875af1925050503d806000811461188e576040519150601f19603f3d011682016040523d82523d6000602084013e611893565b606091505b505080915050806118eb576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b611919565b6033546040830151603954611919926001600160a01b039182169291169063ffffffff612e6116565b604080830180516020808601516001600160a01b031660009081526038909152929092206001019190915551603e546119579163ffffffff612eb816565b603e55611962611079565b611a4e565b6039546001600160a01b0316611a2657602082015160408084015190516001600160a01b0390921691600081818185875af1925050503d80600081146119c9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ce565b606091505b50508091505080611962576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b60208201516040830151603954611a4e926001600160a01b039091169163ffffffff612e6116565b6020808301516001600160a01b03908116600090815260388352604090819020805460ff19169055603354815189815291518a9491909316927fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09281900390910190a350600195945050505050565b603f5460009060ff16611b0b576040805162461bcd60e51b8152602060048201526011602482015270149859d9545d5a5d08191a5cd8589b1959607a1b604482015290519081900360640190fd5b33600090815260386020526040902060010154611b65576040805162461bcd60e51b81526020600482015260136024820152721b9bc8199d5b99081d1bc8149859d9545d5a5d606a1b604482015290519081900360640190fd5b336000908152603860205260408120600181018054929055805461ff0019166101001790556039546001600160a01b0316611c4757611c40603e54611c34603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf157600080fd5b505afa158015611c05573d6000803e3d6000fd5b505050506040513d6020811015611c1b57600080fd5b505184906001600160a01b03163163ffffffff612f1916565b9063ffffffff612f7216565b9150611cdc565b603e54603954603354604080516370a0823160e01b81526001600160a01b0392831660048201529051611cd99493611c349316916370a08231916024808301926020929190829003018186803b158015611ca057600080fd5b505afa158015611cb4573d6000803e3d6000fd5b505050506040513d6020811015611cca57600080fd5b5051849063ffffffff612f1916565b91505b611ce68233612bc1565b6033546040805163089ae1c960e41b815290516000926001600160a01b0316916389ae1c90916004808301926020929190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d6020811015611d5557600080fd5b5051604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d9f57600080fd5b505afa158015611db3573d6000803e3d6000fd5b505050506040513d6020811015611dc957600080fd5b505160335460408051638da5cb5b60e01b815290519293506001600160a01b0390911691638da5cb5b91600480820192602092909190829003018186803b158015611e1357600080fd5b505afa158015611e27573d6000803e3d6000fd5b505050506040513d6020811015611e3d57600080fd5b50516040805163ddbfcc6b60e01b81526004810184905233602482015290516001600160a01b039092169163ddbfcc6b916044808201926020929091908290030181600087803b158015611e9057600080fd5b505af1158015611ea4573d6000803e3d6000fd5b505050506040513d6020811015611eba57600080fd5b5051611ec557600080fd5b603e54611ed8908363ffffffff612fb416565b603e55603354604051849133916001600160a01b03909116907f08edb737cb3d125a1b953b10d7d3c5829d48d7dbf05ab9f7aab98fe84671fc6990600090a4505090565b60345460009082906001600160a01b03163314611f75576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561204657600080fd5b505afa15801561205a573d6000803e3d6000fd5b505050506040513d602081101561207057600080fd5b50519392505050565b60345460009082906001600160a01b031633146120d2576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d602081101561214a57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156121a757600080fd5b505af11580156121bb573d6000803e3d6000fd5b505050506040513d60208110156121d157600080fd5b50519695505050505050565b60006121e7613404565b5060008281526037602081815260408084208151606081018352815460ff81161515825261010090046001600160a01b0316818501819052600183015493820193909352948790529290915261227a576040805162461bcd60e51b81526020600482015260136024820152726e6f206d656d62657220746f2072656465656d60681b604482015290519081900360640190fd5b8054610100908190046001600160a01b03166000908152603860205260409020540460ff16156122f1576040805162461bcd60e51b815260206004820152601760248201527f6d656d62657220616c7265616479207261676551756974000000000000000000604482015290519081900360640190fd5b8054610100600160a81b03198116825560ff161515600114612353576040805162461bcd60e51b8152602060048201526016602482015275081c1c9bdc1bdcd85b081b9bdd081858d8d95c1d195960521b604482015290519081900360640190fd5b603b54612366578160400151925061236c565b603b5492505b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ba57600080fd5b505afa1580156123ce573d6000803e3d6000fd5b505050506040513d60208110156123e457600080fd5b50516020838101516040805163dea9e24d60e01b8152600481018890526001600160a01b0392831660248201529051919093169263dea9e24d9260448083019391928290030181600087803b15801561243c57600080fd5b505af1158015612450573d6000803e3d6000fd5b505050506040513d602081101561246657600080fd5b50516124b9576040805162461bcd60e51b815260206004820152601960248201527f6661696c656420746f206d696e742072657075746174696f6e00000000000000604482015290519081900360640190fd5b6020828101516033546040805187815290516001600160a01b03938416948994909316927fa23744d636594bf9b6875314ae23191b2096248670a007d1e6209b35e21dd55d928290030190a45050919050565b60345460009082906001600160a01b03163314612565576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b357600080fd5b505afa1580156125c7573d6000803e3d6000fd5b505050506040513d60208110156125dd57600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b15801561263257600080fd5b505af1158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b505195945050505050565b6040518060400160405280601681526020017546554e4445445f4245464f52455f444541444c494e4560501b81525081565b603e5481565b6038602052600090815260409020805460019091015460ff808316926101009004169083565b60345460009082906001600160a01b0316331461271e576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561276c57600080fd5b505afa158015612780573d6000803e3d6000fd5b505050506040513d602081101561279657600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b15801561263257600080fd5b6001600160a01b038416612846576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b61284f85612ff6565b603480546001600160a01b0319166001600160a01b03861617905582612a5d576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156128b95781810151838201526020016128a1565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156128f457600080fd5b505afa158015612908573d6000803e3d6000fd5b505050506040513d602081101561291e57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d6101a081101561299b57600080fd5b5051905080612a5657604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b838110156129ec5781810151838201526020016129d4565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015612a2957600080fd5b505af1158015612a3d573d6000803e3d6000fd5b505050506040513d6020811015612a5357600080fd5b50505b5050612a63565b60358390555b5050505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612ac490859061310e565b50505050565b60008151835114612add57506000610c1d565b816040516020018082805190602001908083835b60208310612b105780518252601f199092019160209182019101612af1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310612b7e5780518252601f199092019160209182019101612b5f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120149050610c1d565b6039546001600160a01b0316612d1457603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1f57600080fd5b505afa158015612c33573d6000803e3d6000fd5b505050506040513d6020811015612c4957600080fd5b50516040805163658b6a5160e11b8152600481018590526001600160a01b0384811660248301529151919092169163cb16d4a29160448083019260209291908290030181600087803b158015612c9e57600080fd5b505af1158015612cb2573d6000803e3d6000fd5b505050506040513d6020811015612cc857600080fd5b5051612d0f576040805162461bcd60e51b81526020600482015260116024820152701cd95b9908195d1a195c8819985a5b1959607a1b604482015290519081900360640190fd5b612e5d565b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d6257600080fd5b505afa158015612d76573d6000803e3d6000fd5b505050506040513d6020811015612d8c57600080fd5b50516039546040805163dab0efff60e01b81526001600160a01b0392831660048201528483166024820152604481018690529051919092169163dab0efff9160648083019260209291908290030181600087803b158015612dec57600080fd5b505af1158015612e00573d6000803e3d6000fd5b505050506040513d6020811015612e1657600080fd5b5051612e5d576040805162461bcd60e51b81526020600482015260116024820152701cd95b99081d1bdad95b8819985a5b1959607a1b604482015290519081900360640190fd5b5050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612eb390849061310e565b505050565b600082820183811015612f12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612f2857506000610c1d565b82820282848281612f3557fe5b0414612f125760405162461bcd60e51b81526004018080602001828103825260218152602001806134796021913960400191505060405180910390fd5b6000612f1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c6565b6000612f1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613368565b600054610100900460ff168061300f575061300f6133c2565b8061301d575060005460ff16155b6130585760405162461bcd60e51b815260040180806020018281038252602e81526020018061349a602e913960400191505060405180910390fd5b600054610100900460ff16158015613083576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166130de576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015612e5d576000805461ff00191690555050565b613120826001600160a01b03166133c8565b613171576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106131af5780518252601f199092019160209182019101613190565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613211576040519150601f19603f3d011682016040523d82523d6000602084013e613216565b606091505b50915091508161326d576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115612ac45780806020019051602081101561328957600080fd5b5051612ac45760405162461bcd60e51b815260040180806020018281038252602a81526020018061351c602a913960400191505060405180910390fd5b600081836133525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133175781810151838201526020016132ff565b50505050905090810190601f1680156133445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161335e57fe5b0495945050505050565b600081848411156133ba5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156133175781810151838201526020016132ff565b505050900390565b303b1590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906133fc57508115155b949350505050565b60408051606081018252600080825260208201819052918101919091529056fe4554482072656365697665642073686f756c206d6174636820746865205f666565416d6f756e745f666565416d6f756e742073686f756c64206265203e3d207468656e20746865206d696e466565546f4a6f696e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656463616e20726566756e64206f6e6c792069662066756e64696e6720676f616c206e6f74207265616368656463616e20726566756e64206f6e6c792061667465722066756e64696e67476f616c446561646c696e655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c6c70ee7c5375ecc0e70ee3d70e0331ee20ab3deb2e295ebe536dc696a059d6464736f6c634300060a0033",
  "deployedBytecode": "0x6080604052600436106101b75760003560e01c806393df91a1116100ec578063bea75f281161008a578063e4392dbb11610064578063e4392dbb146106a9578063ee2ac05f146106be578063f00b03d2146106d3578063f81f8bf614610726576101b7565b8063bea75f28146105f7578063c7916cf914610640578063d29b5d2f1461066a576101b7565b80639a4f14bc116100c65780639a4f14bc1461055f5780639d4c162d14610588578063b0ccbf8c146105b8578063b551c373146105cd576101b7565b806393df91a1146104875780639537ba0c1461049c5780639588378e14610526576101b7565b80635aef7de61161015957806378065f271161013357806378065f271461041e5780637a3a0e84146104335780637a5cb92c146104485780637ae5644a14610472576101b7565b80635aef7de6146103bb5780636b8eb403146103d05780637350dbd114610409576101b7565b80633edf7ca1116101955780633edf7ca11461034b57806345c3dffa1461037c5780634ea2c7ec14610391578063590e1ae3146103a6576101b7565b80630a1befb3146101bc578063187a9e4b1461023f57806332ed5b12146102f9575b600080fd5b3480156101c857600080fd5b5061023d60048036036102a08110156101e057600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0810135909116906102008101359061022081013590610240810135906102608101359061028001351515610765565b005b6102e76004803603604081101561025557600080fd5b81019060208101813564010000000081111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460018302840111640100000000831117156102a457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506107e7915050565b60408051918252519081900360200190f35b34801561030557600080fd5b506103236004803603602081101561031c57600080fd5b5035610c23565b6040805193151584526001600160a01b03909216602084015282820152519081900360600190f35b34801561035757600080fd5b50610360610c50565b604080516001600160a01b039092168252519081900360200190f35b34801561038857600080fd5b506102e7610c5f565b34801561039d57600080fd5b506102e7610c65565b3480156103b257600080fd5b506102e7610c6b565b3480156103c757600080fd5b50610360610f90565b3480156103dc57600080fd5b506102e7600480360360408110156103f357600080fd5b506001600160a01b038135169060200135610f9f565b34801561041557600080fd5b5061023d611079565b34801561042a57600080fd5b50610360611499565b34801561043f57600080fd5b506102e76114a8565b34801561045457600080fd5b506102e76004803603602081101561046b57600080fd5b50356114ae565b34801561047e57600080fd5b506102e76114c0565b34801561049357600080fd5b506102e76114c6565b3480156104a857600080fd5b506104b16114cc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104eb5781810151838201526020016104d3565b50505050905090810190601f1680156105185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053257600080fd5b506102e76004803603604081101561054957600080fd5b506001600160a01b0381351690602001356114ec565b34801561056b57600080fd5b5061057461161d565b604080519115158252519081900360200190f35b34801561059457600080fd5b50610574600480360360408110156105ab57600080fd5b5080359060200135611626565b3480156105c457600080fd5b506102e7611abd565b3480156105d957600080fd5b506102e7600480360360208110156105f057600080fd5b5035611f1c565b34801561060357600080fd5b506105746004803603608081101561061a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612079565b34801561064c57600080fd5b506102e76004803603602081101561066357600080fd5b50356121dd565b34801561067657600080fd5b506105746004803603606081101561068d57600080fd5b508035906001600160a01b03602082013516906040013561250c565b3480156106b557600080fd5b506104b1612667565b3480156106ca57600080fd5b506102e7612699565b3480156106df57600080fd5b50610706600480360360208110156106f657600080fd5b50356001600160a01b031661269f565b604080519315158452911515602084015282820152519081900360600190f35b34801561073257600080fd5b506105746004803603606081101561074957600080fd5b508035906001600160a01b0360208201351690604001356126c5565b61079c8b8b898c600b806020026040519081016040528092919082600b602002808284376000920191909152508e91506127eb9050565b603980546001600160a01b0319166001600160a01b039790971696909617909555603a93909355603b91909155603c55603d55603f805460ff19169115159190911790555050505050565b3360008181526038602052604081205490919060ff1615610845576040805162461bcd60e51b8152602060048201526013602482015272616c726561647920612063616e64696461746560681b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561089357600080fd5b505afa1580156108a7573d6000803e3d6000fd5b505050506040513d60208110156108bd57600080fd5b5051604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561090957600080fd5b505afa15801561091d573d6000803e3d6000fd5b505050506040513d602081101561093357600080fd5b50511561097a576040805162461bcd60e51b815260206004820152601060248201526f30b63932b0b23c90309036b2b6b132b960811b604482015290519081900360640190fd5b603a548310156109bb5760405162461bcd60e51b815260040180806020018281038252602d81526020018061344c602d913960400191505060405180910390fd5b6001600160a01b038082166000908152603860205260409020805460ff1916600117905560395416610a2a57348314610a255760405162461bcd60e51b81526004018080602001828103825260278152602001806134256027913960400191505060405180910390fd5b610a48565b603954610a48906001600160a01b031682308663ffffffff612a6a16565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093526001600160a01b03858116604485015291821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610ab557600080fd5b505af1158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b50519050610aeb613404565b50604080516060808201835260008083526001600160a01b0380871660208086018281528688018c815289865260378352888620885181549351871661010002610100600160a81b031991151560ff19909516949094171692909217825551600191909101556033548751808301939093529682018b90528482528b51948201949094528a51949587959216937fda76b8228e4eb3d710f6cddb20dccd29250b738750d145adb879de9bc87ab236938c938a938d939092839260808401928801918190849084905b83811015610bcb578181015183820152602001610bb3565b50505050905090810190601f168015610bf85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060008181526036602052604090204390559150505b92915050565b6037602052600090815260409020805460019091015460ff82169161010090046001600160a01b03169083565b6034546001600160a01b031681565b603a5481565b60355481565b6000603d544211610cad5760405162461bcd60e51b81526004018080602001828103825260298152602001806134f36029913960400191505060405180910390fd5b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051610e98966001600160a01b03909316946358cb548b949293839260449092019180838360005b83811015610d53578181015183820152602001610d3b565b50505050905090810190601f168015610d805780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b158015610d9d57600080fd5b505afa158015610db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610dda57600080fd5b8101908080516040519392919084640100000000821115610dfa57600080fd5b908301906020820185811115610e0f57600080fd5b8251640100000000811182820188101715610e2957600080fd5b82525081516020918201929091019080838360005b83811015610e56578181015183820152602001610e3e565b50505050905090810190601f168015610e835780820380516001836020036101000a031916815260200191505b50604052505050612aca90919063ffffffff16565b15610ed45760405162461bcd60e51b815260040180806020018281038252602b8152602001806134c8602b913960400191505060405180910390fd5b33600090815260386020526040902060010154610f2d576040805162461bcd60e51b81526020600482015260126024820152711b9bc8199d5b991cc81d1bc81c99599d5b9960721b604482015290519081900360640190fd5b50336000818152603860205260408120600101805491905590610f51908290612bc1565b603354604051829133916001600160a01b03909116907ff40cc8c1a1d17359049ba500cfc894596a692cffc9d03943cd92ec2e159cf6ae90600090a490565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610ff8576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b15801561104557600080fd5b505afa158015611059573d6000803e3d6000fd5b505050506040513d602081101561106f57600080fd5b5051949350505050565b6039546000906001600160a01b031661111757603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110da57600080fd5b505afa1580156110ee573d6000803e3d6000fd5b505050506040513d602081101561110457600080fd5b50516001600160a01b0316319050611196565b603954603354604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b15801561116757600080fd5b505afa15801561117b573d6000803e3d6000fd5b505050506040513d602081101561119157600080fd5b505190505b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051611239966001600160a01b03909316946358cb548b949293839260449092019180838360008315610d53578181015183820152602001610d3b565b1580156112485750603c548110155b80156112555750603d5442105b1561149657603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112a857600080fd5b505afa1580156112bc573d6000803e3d6000fd5b505050506040513d60208110156112d257600080fd5b5051604080518082018252601681527546554e4445445f4245464f52455f444541444c494e4560501b6020828101918252835180850185526004808252635452554560e01b928201929092528451634e4e399360e11b81529182019485528351604483015283516001600160a01b0390961695639c9c732695919391928392602482019260649092019180838360005b8381101561137a578181015183820152602001611362565b50505050905090810190601f1680156113a75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156113da5781810151838201526020016113c2565b50505050905090810190601f1680156114075780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561142857600080fd5b505af115801561143c573d6000803e3d6000fd5b505050506040513d602081101561145257600080fd5b505161145d57600080fd5b6033546040516001600160a01b03909116907f0640f71d45326639d6b83950c3933726d23f87a54e4a1853104d6f88e99c8aea90600090a25b50565b6039546001600160a01b031681565b603c5481565b60366020526000908152604090205481565b603d5481565b603b5481565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b03163314611545576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561159357600080fd5b505afa1580156115a7573d6000803e3d6000fd5b505050506040513d60208110156115bd57600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b15801561104557600080fd5b603f5460ff1681565b60345460009083906001600160a01b0316331461167f576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b60008481526037602052604090205460ff161561169b57600080fd5b60008481526037602052604090205461010090046001600160a01b03166116c157600080fd5b6116c9613404565b5060008481526037602090815260408083208151606081018352815460ff81161515825261010090046001600160a01b03169381019390935260019081015491830191909152909190851480156118105750603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561176957600080fd5b505afa15801561177d573d6000803e3d6000fd5b505050506040513d602081101561179357600080fd5b5051602083810151604080516370a0823160e01b81526001600160a01b039283166004820152905191909316926370a08231926024808301939192829003018186803b1580156117e257600080fd5b505afa1580156117f6573d6000803e3d6000fd5b505050506040513d602081101561180c57600080fd5b5051155b15611967576000868152603760205260409020805460ff191660011790556039546001600160a01b03166118f05760335460408084015190516001600160a01b0390921691600081818185875af1925050503d806000811461188e576040519150601f19603f3d011682016040523d82523d6000602084013e611893565b606091505b505080915050806118eb576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b611919565b6033546040830151603954611919926001600160a01b039182169291169063ffffffff612e6116565b604080830180516020808601516001600160a01b031660009081526038909152929092206001019190915551603e546119579163ffffffff612eb816565b603e55611962611079565b611a4e565b6039546001600160a01b0316611a2657602082015160408084015190516001600160a01b0390921691600081818185875af1925050503d80600081146119c9576040519150601f19603f3d011682016040523d82523d6000602084013e6119ce565b606091505b50508091505080611962576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b60208201516040830151603954611a4e926001600160a01b039091169163ffffffff612e6116565b6020808301516001600160a01b03908116600090815260388352604090819020805460ff19169055603354815189815291518a9491909316927fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc09281900390910190a350600195945050505050565b603f5460009060ff16611b0b576040805162461bcd60e51b8152602060048201526011602482015270149859d9545d5a5d08191a5cd8589b1959607a1b604482015290519081900360640190fd5b33600090815260386020526040902060010154611b65576040805162461bcd60e51b81526020600482015260136024820152721b9bc8199d5b99081d1bc8149859d9545d5a5d606a1b604482015290519081900360640190fd5b336000908152603860205260408120600181018054929055805461ff0019166101001790556039546001600160a01b0316611c4757611c40603e54611c34603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf157600080fd5b505afa158015611c05573d6000803e3d6000fd5b505050506040513d6020811015611c1b57600080fd5b505184906001600160a01b03163163ffffffff612f1916565b9063ffffffff612f7216565b9150611cdc565b603e54603954603354604080516370a0823160e01b81526001600160a01b0392831660048201529051611cd99493611c349316916370a08231916024808301926020929190829003018186803b158015611ca057600080fd5b505afa158015611cb4573d6000803e3d6000fd5b505050506040513d6020811015611cca57600080fd5b5051849063ffffffff612f1916565b91505b611ce68233612bc1565b6033546040805163089ae1c960e41b815290516000926001600160a01b0316916389ae1c90916004808301926020929190829003018186803b158015611d2b57600080fd5b505afa158015611d3f573d6000803e3d6000fd5b505050506040513d6020811015611d5557600080fd5b5051604080516370a0823160e01b815233600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d9f57600080fd5b505afa158015611db3573d6000803e3d6000fd5b505050506040513d6020811015611dc957600080fd5b505160335460408051638da5cb5b60e01b815290519293506001600160a01b0390911691638da5cb5b91600480820192602092909190829003018186803b158015611e1357600080fd5b505afa158015611e27573d6000803e3d6000fd5b505050506040513d6020811015611e3d57600080fd5b50516040805163ddbfcc6b60e01b81526004810184905233602482015290516001600160a01b039092169163ddbfcc6b916044808201926020929091908290030181600087803b158015611e9057600080fd5b505af1158015611ea4573d6000803e3d6000fd5b505050506040513d6020811015611eba57600080fd5b5051611ec557600080fd5b603e54611ed8908363ffffffff612fb416565b603e55603354604051849133916001600160a01b03909116907f08edb737cb3d125a1b953b10d7d3c5829d48d7dbf05ab9f7aab98fe84671fc6990600090a4505090565b60345460009082906001600160a01b03163314611f75576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561204657600080fd5b505afa15801561205a573d6000803e3d6000fd5b505050506040513d602081101561207057600080fd5b50519392505050565b60345460009082906001600160a01b031633146120d2576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d602081101561214a57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b1580156121a757600080fd5b505af11580156121bb573d6000803e3d6000fd5b505050506040513d60208110156121d157600080fd5b50519695505050505050565b60006121e7613404565b5060008281526037602081815260408084208151606081018352815460ff81161515825261010090046001600160a01b0316818501819052600183015493820193909352948790529290915261227a576040805162461bcd60e51b81526020600482015260136024820152726e6f206d656d62657220746f2072656465656d60681b604482015290519081900360640190fd5b8054610100908190046001600160a01b03166000908152603860205260409020540460ff16156122f1576040805162461bcd60e51b815260206004820152601760248201527f6d656d62657220616c7265616479207261676551756974000000000000000000604482015290519081900360640190fd5b8054610100600160a81b03198116825560ff161515600114612353576040805162461bcd60e51b8152602060048201526016602482015275081c1c9bdc1bdcd85b081b9bdd081858d8d95c1d195960521b604482015290519081900360640190fd5b603b54612366578160400151925061236c565b603b5492505b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156123ba57600080fd5b505afa1580156123ce573d6000803e3d6000fd5b505050506040513d60208110156123e457600080fd5b50516020838101516040805163dea9e24d60e01b8152600481018890526001600160a01b0392831660248201529051919093169263dea9e24d9260448083019391928290030181600087803b15801561243c57600080fd5b505af1158015612450573d6000803e3d6000fd5b505050506040513d602081101561246657600080fd5b50516124b9576040805162461bcd60e51b815260206004820152601960248201527f6661696c656420746f206d696e742072657075746174696f6e00000000000000604482015290519081900360640190fd5b6020828101516033546040805187815290516001600160a01b03938416948994909316927fa23744d636594bf9b6875314ae23191b2096248670a007d1e6209b35e21dd55d928290030190a45050919050565b60345460009082906001600160a01b03163314612565576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b357600080fd5b505afa1580156125c7573d6000803e3d6000fd5b505050506040513d60208110156125dd57600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b15801561263257600080fd5b505af1158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b505195945050505050565b6040518060400160405280601681526020017546554e4445445f4245464f52455f444541444c494e4560501b81525081565b603e5481565b6038602052600090815260409020805460019091015460ff808316926101009004169083565b60345460009082906001600160a01b0316331461271e576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561276c57600080fd5b505afa158015612780573d6000803e3d6000fd5b505050506040513d602081101561279657600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b15801561263257600080fd5b6001600160a01b038416612846576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b61284f85612ff6565b603480546001600160a01b0319166001600160a01b03861617905582612a5d576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156128b95781810151838201526020016128a1565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b1580156128f457600080fd5b505afa158015612908573d6000803e3d6000fd5b505050506040513d602081101561291e57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b15801561297057600080fd5b505afa158015612984573d6000803e3d6000fd5b505050506040513d6101a081101561299b57600080fd5b5051905080612a5657604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b838110156129ec5781810151838201526020016129d4565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015612a2957600080fd5b505af1158015612a3d573d6000803e3d6000fd5b505050506040513d6020811015612a5357600080fd5b50505b5050612a63565b60358390555b5050505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612ac490859061310e565b50505050565b60008151835114612add57506000610c1d565b816040516020018082805190602001908083835b60208310612b105780518252601f199092019160209182019101612af1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310612b7e5780518252601f199092019160209182019101612b5f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120149050610c1d565b6039546001600160a01b0316612d1457603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c1f57600080fd5b505afa158015612c33573d6000803e3d6000fd5b505050506040513d6020811015612c4957600080fd5b50516040805163658b6a5160e11b8152600481018590526001600160a01b0384811660248301529151919092169163cb16d4a29160448083019260209291908290030181600087803b158015612c9e57600080fd5b505af1158015612cb2573d6000803e3d6000fd5b505050506040513d6020811015612cc857600080fd5b5051612d0f576040805162461bcd60e51b81526020600482015260116024820152701cd95b9908195d1a195c8819985a5b1959607a1b604482015290519081900360640190fd5b612e5d565b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d6257600080fd5b505afa158015612d76573d6000803e3d6000fd5b505050506040513d6020811015612d8c57600080fd5b50516039546040805163dab0efff60e01b81526001600160a01b0392831660048201528483166024820152604481018690529051919092169163dab0efff9160648083019260209291908290030181600087803b158015612dec57600080fd5b505af1158015612e00573d6000803e3d6000fd5b505050506040513d6020811015612e1657600080fd5b5051612e5d576040805162461bcd60e51b81526020600482015260116024820152701cd95b99081d1bdad95b8819985a5b1959607a1b604482015290519081900360640190fd5b5050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052612eb390849061310e565b505050565b600082820183811015612f12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082612f2857506000610c1d565b82820282848281612f3557fe5b0414612f125760405162461bcd60e51b81526004018080602001828103825260218152602001806134796021913960400191505060405180910390fd5b6000612f1283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132c6565b6000612f1283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613368565b600054610100900460ff168061300f575061300f6133c2565b8061301d575060005460ff16155b6130585760405162461bcd60e51b815260040180806020018281038252602e81526020018061349a602e913960400191505060405180910390fd5b600054610100900460ff16158015613083576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166130de576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015612e5d576000805461ff00191690555050565b613120826001600160a01b03166133c8565b613171576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106131af5780518252601f199092019160209182019101613190565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613211576040519150601f19603f3d011682016040523d82523d6000602084013e613216565b606091505b50915091508161326d576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115612ac45780806020019051602081101561328957600080fd5b5051612ac45760405162461bcd60e51b815260040180806020018281038252602a81526020018061351c602a913960400191505060405180910390fd5b600081836133525760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156133175781810151838201526020016132ff565b50505050905090810190601f1680156133445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161335e57fe5b0495945050505050565b600081848411156133ba5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156133175781810151838201526020016132ff565b505050900390565b303b1590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906133fc57508115155b949350505050565b60408051606081018252600080825260208201819052918101919091529056fe4554482072656365697665642073686f756c206d6174636820746865205f666565416d6f756e745f666565416d6f756e742073686f756c64206265203e3d207468656e20746865206d696e466565546f4a6f696e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656463616e20726566756e64206f6e6c792069662066756e64696e6720676f616c206e6f74207265616368656463616e20726566756e64206f6e6c792061667465722066756e64696e67476f616c446561646c696e655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220c6c70ee7c5375ecc0e70ee3d70e0331ee20ab3deb2e295ebe536dc696a059d6464736f6c634300060a0033"
}