{
  "contractName": "UpgradeScheme",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64[3]",
          "name": "_packageVersion",
          "type": "uint64[3]"
        },
        {
          "indexed": false,
          "internalType": "bytes32[]",
          "name": "_contractsNames",
          "type": "bytes32[]"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "_contractsToUpgrade",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "NewUpgradeProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "ProposalDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_decision",
          "type": "bool"
        }
      ],
      "name": "ProposalExecuted",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "arcPackage",
      "outputs": [
        {
          "internalType": "contract Package",
          "name": "",
          "type": "address"
        }
      ],
      "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": [
        {
          "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 Package",
          "name": "_package",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "organizationProposals",
      "outputs": [
        {
          "internalType": "bool",
          "name": "exist",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64[3]",
          "name": "_packageVersion",
          "type": "uint64[3]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_contractsNames",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_contractsToUpgrade",
          "type": "address[]"
        },
        {
          "internalType": "string",
          "name": "_descriptionHash",
          "type": "string"
        }
      ],
      "name": "proposeUpgrade",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": [
        {
          "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": "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": "0x608060405234801561001057600080fd5b50612108806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063985e313f11610097578063bea75f2811610066578063bea75f281461043b578063d29b5d2f14610477578063d8145e2d146104a9578063f81f8bf6146104c6576100f5565b8063985e313f146101bd5780639d4c162d1461020c578063a191f8e814610243578063b551c3731461041e576100f5565b80635aef7de6116100d35780635aef7de6146101405780636b8eb403146101485780637a5cb92c146101745780639588378e14610191576100f5565b80632b304bc5146100fa5780633edf7ca11461011e5780634ea2c7ec14610126575b600080fd5b6101026104f8565b604080516001600160a01b039092168252519081900360200190f35b610102610507565b61012e610516565b60408051918252519081900360200190f35b61010261051c565b61012e6004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561052b565b61012e6004803603602081101561018a57600080fd5b5035610605565b61012e600480360360408110156101a757600080fd5b506001600160a01b038135169060200135610617565b61020a60048036036102008110156101d457600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610748565b005b61022f6004803603604081101561022257600080fd5b50803590602001356107a6565b604080519115158252519081900360200190f35b61012e600480360360c081101561025957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b8111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111600160201b831117156102d957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460018302840111600160201b831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e0d945050505050565b61012e6004803603602081101561043457600080fd5b50356113f4565b61022f6004803603608081101561045157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611551565b61022f6004803603606081101561048d57600080fd5b508035906001600160a01b0360208201351690604001356116b5565b61022f600480360360208110156104bf57600080fd5b5035611810565b61022f600480360360608110156104dc57600080fd5b508035906001600160a01b036020820135169060400135611828565b6038546001600160a01b031681565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610584576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156105d157600080fd5b505afa1580156105e5573d6000803e3d6000fd5b505050506040513d60208110156105fb57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610670576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156105d157600080fd5b61077f86868487600b806020026040519081016040528092919082600b6020028082843760009201919091525089915061194e9050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146107ff576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6000848152603760205260409020600381015460ff16610866576040805162461bcd60e51b815260206004820152601760248201527f6d7573742062652061206c6976652070726f706f73616c000000000000000000604482015290519081900360640190fd5b8360011415610d435760038101805460ff1916905560028101805460408051602080840282018101909252828152606093909290918301828280156108d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108b6575b50939450600093505050505b8151811015610d405760008360010182815481106108fa57fe5b90600052602060002001549050606061091282611bcd565b603854604051630efa075560e11b81529192506000916001600160a01b0390911690631df40eaa90889060048101906064018286835b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411610948579050505091505060206040518083038186803b1580156109a957600080fd5b505afa1580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b50516040516335b41c4b60e11b81526020600482018181528551602484015285516001600160a01b0390941693636b68389693879383926044909201919085019080838360005b83811015610a32578181015183820152602001610a1a565b50505050905090810190601f168015610a5f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a7c57600080fd5b505afa158015610a90573d6000803e3d6000fd5b505050506040513d6020811015610aa657600080fd5b505160335460408051638da5cb5b60e01b815290519293506000926001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d6020811015610b1d57600080fd5b505186519091506001600160a01b03821690632bf1645890889088908110610b4157fe5b602090810291909101810151604080516001600160a01b038089166024808401919091528351808403820181526044938401855295860180516001600160e01b0316631b2ce7f360e11b178152935160e088901b6001600160e01b0319168152918516600483019081526000938301849052606091830191825286516064840152865195969593949093919260840191808383885b83811015610bee578181015183820152602001610bd6565b50505050905090810190601f168015610c1b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c7957600080fd5b815160208301805160405192949293830192919084600160201b821115610c9f57600080fd5b908301906020820185811115610cb457600080fd5b8251600160201b811182820188101715610ccd57600080fd5b82525081516020918201929091019080838360005b83811015610cfa578181015183820152602001610ce2565b50505050905090810190601f168015610d275780820380516001836020036101000a031916815260200191505b506040525050600190970196506108e095505050505050565b50505b600085815260376020526040812090610d5c8282611e0d565b610d6a600183016000611e14565b610d78600283016000611e14565b50600301805460ff1916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051600187148152905187926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a3506001949350505050565b6000603c84511115610e505760405162461bcd60e51b815260040180806020018281038252602881526020018061204e6028913960400191505060405180910390fd5b8251845114610e905760405162461bcd60e51b8152600401808060200182810382526037815260200180611fe96037913960400191505060405180910390fd5b603854604051631ae7200b60e11b81526001600160a01b03909116906335ce40169087906004018082606080838360005b83811015610ed9578181015183820152602001610ec1565b5050505090500191505060206040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b5051610f625760405162461bcd60e51b815260040180806020018281038252602e815260200180612020602e913960400191505060405180910390fd5b60005b835181101561114657603854604051630efa075560e11b81526000916001600160a01b031690631df40eaa908990600401808260608083838a5b83811015610fb7578181015183820152602001610f9f565b5050505090500191505060206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b505186516001600160a01b0390911690636b683896906110369089908690811061102957fe5b6020026020010151611bcd565b6040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561108257818101518382015260200161106a565b50505050905090810190601f1680156110af5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d60208110156110f657600080fd5b50516001600160a01b0316141561113e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806120a4602f913960400191505060405180910390fd5b600101610f65565b5060345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b505050506040513d60208110156111dc57600080fd5b5051604080516080810182528881526020818101899052818301889052600160608301526000848152603790915291909120815192935090916112229082906003611e35565b50602082810151805161123b9260018501920190611edd565b5060408201518051611257916002840191602090910190611f24565b50606091820151600391909101805460ff1916911515919091179055600082815260366020526040808220439055603354905184936001600160a01b03909216927f8e0f592dd8219624d327cf775f602bbbc5547e2db7af547d55de187aa0bd6970928b928b928b928b9291829187918190849084905b838110156112e65781810151838201526020016112ce565b50505050905001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611331578181015183820152602001611319565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611370578181015183820152602001611358565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113ac578181015183820152602001611394565b50505050905090810190601f1680156113d95780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a395945050505050565b60345460009082906001600160a01b0316331461144d576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561149b57600080fd5b505afa1580156114af573d6000803e3d6000fd5b505050506040513d60208110156114c557600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561151e57600080fd5b505afa158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b50519392505050565b60345460009082906001600160a01b031633146115aa576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f857600080fd5b505afa15801561160c573d6000803e3d6000fd5b505050506040513d602081101561162257600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d60208110156116a957600080fd5b50519695505050505050565b60345460009082906001600160a01b0316331461170e576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561175c57600080fd5b505afa158015611770573d6000803e3d6000fd5b505050506040513d602081101561178657600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b1580156117db57600080fd5b505af11580156117ef573d6000803e3d6000fd5b505050506040513d602081101561180557600080fd5b505195945050505050565b60376020526000908152604090206003015460ff1681565b60345460009082906001600160a01b03163314611881576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118cf57600080fd5b505afa1580156118e3573d6000803e3d6000fd5b505050506040513d60208110156118f957600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b1580156117db57600080fd5b6001600160a01b0384166119a9576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b6119b285611ced565b603480546001600160a01b0319166001600160a01b03861617905582611bc0576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611a1c578181015183820152602001611a04565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611a5757600080fd5b505afa158015611a6b573d6000803e3d6000fd5b505050506040513d6020811015611a8157600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611ad357600080fd5b505afa158015611ae7573d6000803e3d6000fd5b505050506040513d6101a0811015611afe57600080fd5b5051905080611bb957604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611b4f578181015183820152602001611b37565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d6020811015611bb657600080fd5b50505b5050611bc6565b60358390555b5050505050565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b6020811015611c4b576008810260020a85026001600160f81b0319811615611c425780848481518110611c2457fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101611bf5565b60608267ffffffffffffffff81118015611c6457600080fd5b506040519080825280601f01601f191660200182016040528015611c8f576020820181803683370190505b509050600091505b82821015611ce457838281518110611cab57fe5b602001015160f81c60f81b818381518110611cc257fe5b60200101906001600160f81b031916908160001a905350600190910190611c97565b95945050505050565b600054610100900460ff1680611d065750611d06611e06565b80611d14575060005460ff16155b611d4f5760405162461bcd60e51b815260040180806020018281038252602e815260200180612076602e913960400191505060405180910390fd5b600054610100900460ff16158015611d7a576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216611dd5576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015611e02576000805461ff00191690555b5050565b303b155b90565b5060009055565b5080546000825590600052602060002090810190611e329190611f85565b50565b600183019183908215611ecd5791602002820160005b83821115611e9757835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509260200192600801602081600701049283019260010302611e4b565b8015611ecb5782816101000a81549067ffffffffffffffff0219169055600801602081600701049283019260010302611e97565b505b50611ed9929150611f9f565b5090565b828054828255906000526020600020908101928215611f18579160200282015b82811115611f18578251825591602001919060010190611efd565b50611ed9929150611f85565b828054828255906000526020600020908101928215611f79579160200282015b82811115611f7957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611f44565b50611ed9929150611fc4565b611e0a91905b80821115611ed95760008155600101611f8b565b611e0a91905b80821115611ed957805467ffffffffffffffff19168155600101611fa5565b611e0a91905b80821115611ed95780546001600160a01b0319168155600101611fca56fe75706772616465206e616d6520616e64206164647265737320617272617973206d757374206861766520657175616c206c656e677468735370656369666965642076657273696f6e20646f65736e277420657869737420696e20746865205061636b61676563616e207570677261646520757020746f20363020636f6e74726163747320617420612074696d65436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564436f6e7472616374206e616d6520646f6573206e6f7420657869737420696e2041726348697665207061636b616765a26469706673582212208c50451c8fc3fc6f1830832c995ad21ab4f20efede3c52ce2abb907bb99a7a6b64736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063985e313f11610097578063bea75f2811610066578063bea75f281461043b578063d29b5d2f14610477578063d8145e2d146104a9578063f81f8bf6146104c6576100f5565b8063985e313f146101bd5780639d4c162d1461020c578063a191f8e814610243578063b551c3731461041e576100f5565b80635aef7de6116100d35780635aef7de6146101405780636b8eb403146101485780637a5cb92c146101745780639588378e14610191576100f5565b80632b304bc5146100fa5780633edf7ca11461011e5780634ea2c7ec14610126575b600080fd5b6101026104f8565b604080516001600160a01b039092168252519081900360200190f35b610102610507565b61012e610516565b60408051918252519081900360200190f35b61010261051c565b61012e6004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561052b565b61012e6004803603602081101561018a57600080fd5b5035610605565b61012e600480360360408110156101a757600080fd5b506001600160a01b038135169060200135610617565b61020a60048036036102008110156101d457600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0013516610748565b005b61022f6004803603604081101561022257600080fd5b50803590602001356107a6565b604080519115158252519081900360200190f35b61012e600480360360c081101561025957600080fd5b810190808060600190600380602002604051908101604052809291908260036020028082843760009201919091525091949392602081019250359050600160201b8111156102a657600080fd5b8201836020820111156102b857600080fd5b803590602001918460208302840111600160201b831117156102d957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032857600080fd5b82018360208201111561033a57600080fd5b803590602001918460208302840111600160201b8311171561035b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460018302840111600160201b831117156103dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e0d945050505050565b61012e6004803603602081101561043457600080fd5b50356113f4565b61022f6004803603608081101561045157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611551565b61022f6004803603606081101561048d57600080fd5b508035906001600160a01b0360208201351690604001356116b5565b61022f600480360360208110156104bf57600080fd5b5035611810565b61022f600480360360608110156104dc57600080fd5b508035906001600160a01b036020820135169060400135611828565b6038546001600160a01b031681565b6034546001600160a01b031681565b60355481565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610584576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b1580156105d157600080fd5b505afa1580156105e5573d6000803e3d6000fd5b505050506040513d60208110156105fb57600080fd5b5051949350505050565b60366020526000908152604090205481565b60345460009082906001600160a01b03163314610670576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b1580156105d157600080fd5b61077f86868487600b806020026040519081016040528092919082600b6020028082843760009201919091525089915061194e9050565b603880546001600160a01b0319166001600160a01b03929092169190911790555050505050565b60345460009083906001600160a01b031633146107ff576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b6000848152603760205260409020600381015460ff16610866576040805162461bcd60e51b815260206004820152601760248201527f6d7573742062652061206c6976652070726f706f73616c000000000000000000604482015290519081900360640190fd5b8360011415610d435760038101805460ff1916905560028101805460408051602080840282018101909252828152606093909290918301828280156108d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108b6575b50939450600093505050505b8151811015610d405760008360010182815481106108fa57fe5b90600052602060002001549050606061091282611bcd565b603854604051630efa075560e11b81529192506000916001600160a01b0390911690631df40eaa90889060048101906064018286835b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020019060080190602082600701049283019260010382029150808411610948579050505091505060206040518083038186803b1580156109a957600080fd5b505afa1580156109bd573d6000803e3d6000fd5b505050506040513d60208110156109d357600080fd5b50516040516335b41c4b60e11b81526020600482018181528551602484015285516001600160a01b0390941693636b68389693879383926044909201919085019080838360005b83811015610a32578181015183820152602001610a1a565b50505050905090810190601f168015610a5f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b158015610a7c57600080fd5b505afa158015610a90573d6000803e3d6000fd5b505050506040513d6020811015610aa657600080fd5b505160335460408051638da5cb5b60e01b815290519293506000926001600160a01b0390921691638da5cb5b91600480820192602092909190829003018186803b158015610af357600080fd5b505afa158015610b07573d6000803e3d6000fd5b505050506040513d6020811015610b1d57600080fd5b505186519091506001600160a01b03821690632bf1645890889088908110610b4157fe5b602090810291909101810151604080516001600160a01b038089166024808401919091528351808403820181526044938401855295860180516001600160e01b0316631b2ce7f360e11b178152935160e088901b6001600160e01b0319168152918516600483019081526000938301849052606091830191825286516064840152865195969593949093919260840191808383885b83811015610bee578181015183820152602001610bd6565b50505050905090810190601f168015610c1b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c3c57600080fd5b505af1158015610c50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040908152811015610c7957600080fd5b815160208301805160405192949293830192919084600160201b821115610c9f57600080fd5b908301906020820185811115610cb457600080fd5b8251600160201b811182820188101715610ccd57600080fd5b82525081516020918201929091019080838360005b83811015610cfa578181015183820152602001610ce2565b50505050905090810190601f168015610d275780820380516001836020036101000a031916815260200191505b506040525050600190970196506108e095505050505050565b50505b600085815260376020526040812090610d5c8282611e0d565b610d6a600183016000611e14565b610d78600283016000611e14565b50600301805460ff1916905560335460405186916001600160a01b0316907f6bc0cb9e9967b59a69ace442598e1df4368d38661bd5c0800fbcbc9fe855fbbe90600090a360335460408051600187148152905187926001600160a01b0316917fd8b58d7c4ba1519b89f0a4b59f85c776d1bb2876a5087a4e604403c4c3c69f6d919081900360200190a3506001949350505050565b6000603c84511115610e505760405162461bcd60e51b815260040180806020018281038252602881526020018061204e6028913960400191505060405180910390fd5b8251845114610e905760405162461bcd60e51b8152600401808060200182810382526037815260200180611fe96037913960400191505060405180910390fd5b603854604051631ae7200b60e11b81526001600160a01b03909116906335ce40169087906004018082606080838360005b83811015610ed9578181015183820152602001610ec1565b5050505090500191505060206040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b5051610f625760405162461bcd60e51b815260040180806020018281038252602e815260200180612020602e913960400191505060405180910390fd5b60005b835181101561114657603854604051630efa075560e11b81526000916001600160a01b031690631df40eaa908990600401808260608083838a5b83811015610fb7578181015183820152602001610f9f565b5050505090500191505060206040518083038186803b158015610fd957600080fd5b505afa158015610fed573d6000803e3d6000fd5b505050506040513d602081101561100357600080fd5b505186516001600160a01b0390911690636b683896906110369089908690811061102957fe5b6020026020010151611bcd565b6040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561108257818101518382015260200161106a565b50505050905090810190601f1680156110af5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1580156110cc57600080fd5b505afa1580156110e0573d6000803e3d6000fd5b505050506040513d60208110156110f657600080fd5b50516001600160a01b0316141561113e5760405162461bcd60e51b815260040180806020018281038252602f8152602001806120a4602f913960400191505060405180910390fd5b600101610f65565b5060345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b505050506040513d60208110156111dc57600080fd5b5051604080516080810182528881526020818101899052818301889052600160608301526000848152603790915291909120815192935090916112229082906003611e35565b50602082810151805161123b9260018501920190611edd565b5060408201518051611257916002840191602090910190611f24565b50606091820151600391909101805460ff1916911515919091179055600082815260366020526040808220439055603354905184936001600160a01b03909216927f8e0f592dd8219624d327cf775f602bbbc5547e2db7af547d55de187aa0bd6970928b928b928b928b9291829187918190849084905b838110156112e65781810151838201526020016112ce565b50505050905001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611331578181015183820152602001611319565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611370578181015183820152602001611358565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113ac578181015183820152602001611394565b50505050905090810190601f1680156113d95780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a395945050505050565b60345460009082906001600160a01b0316331461144d576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561149b57600080fd5b505afa1580156114af573d6000803e3d6000fd5b505050506040513d60208110156114c557600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b15801561151e57600080fd5b505afa158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b50519392505050565b60345460009082906001600160a01b031633146115aa576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115f857600080fd5b505afa15801561160c573d6000803e3d6000fd5b505050506040513d602081101561162257600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d60208110156116a957600080fd5b50519695505050505050565b60345460009082906001600160a01b0316331461170e576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561175c57600080fd5b505afa158015611770573d6000803e3d6000fd5b505050506040513d602081101561178657600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b1580156117db57600080fd5b505af11580156117ef573d6000803e3d6000fd5b505050506040513d602081101561180557600080fd5b505195945050505050565b60376020526000908152604090206003015460ff1681565b60345460009082906001600160a01b03163314611881576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118cf57600080fd5b505afa1580156118e3573d6000803e3d6000fd5b505050506040513d60208110156118f957600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b1580156117db57600080fd5b6001600160a01b0384166119a9576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b6119b285611ced565b603480546001600160a01b0319166001600160a01b03861617905582611bc0576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b83811015611a1c578181015183820152602001611a04565b50505050905001826001600160a01b03166001600160a01b031681526020019250505060206040518083038186803b158015611a5757600080fd5b505afa158015611a6b573d6000803e3d6000fd5b505050506040513d6020811015611a8157600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b158015611ad357600080fd5b505afa158015611ae7573d6000803e3d6000fd5b505050506040513d6101a0811015611afe57600080fd5b5051905080611bb957604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b83811015611b4f578181015183820152602001611b37565b50505050905001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b158015611b8c57600080fd5b505af1158015611ba0573d6000803e3d6000fd5b505050506040513d6020811015611bb657600080fd5b50505b5050611bc6565b60358390555b5050505050565b6040805160208082528183019092526060918291906020820181803683370190505090506000805b6020811015611c4b576008810260020a85026001600160f81b0319811615611c425780848481518110611c2457fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101611bf5565b60608267ffffffffffffffff81118015611c6457600080fd5b506040519080825280601f01601f191660200182016040528015611c8f576020820181803683370190505b509050600091505b82821015611ce457838281518110611cab57fe5b602001015160f81c60f81b818381518110611cc257fe5b60200101906001600160f81b031916908160001a905350600190910190611c97565b95945050505050565b600054610100900460ff1680611d065750611d06611e06565b80611d14575060005460ff16155b611d4f5760405162461bcd60e51b815260040180806020018281038252602e815260200180612076602e913960400191505060405180910390fd5b600054610100900460ff16158015611d7a576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216611dd5576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015611e02576000805461ff00191690555b5050565b303b155b90565b5060009055565b5080546000825590600052602060002090810190611e329190611f85565b50565b600183019183908215611ecd5791602002820160005b83821115611e9757835183826101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509260200192600801602081600701049283019260010302611e4b565b8015611ecb5782816101000a81549067ffffffffffffffff0219169055600801602081600701049283019260010302611e97565b505b50611ed9929150611f9f565b5090565b828054828255906000526020600020908101928215611f18579160200282015b82811115611f18578251825591602001919060010190611efd565b50611ed9929150611f85565b828054828255906000526020600020908101928215611f79579160200282015b82811115611f7957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611f44565b50611ed9929150611fc4565b611e0a91905b80821115611ed95760008155600101611f8b565b611e0a91905b80821115611ed957805467ffffffffffffffff19168155600101611fa5565b611e0a91905b80821115611ed95780546001600160a01b0319168155600101611fca56fe75706772616465206e616d6520616e64206164647265737320617272617973206d757374206861766520657175616c206c656e677468735370656369666965642076657273696f6e20646f65736e277420657869737420696e20746865205061636b61676563616e207570677261646520757020746f20363020636f6e74726163747320617420612074696d65436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564436f6e7472616374206e616d6520646f6573206e6f7420657869737420696e2041726348697665207061636b616765a26469706673582212208c50451c8fc3fc6f1830832c995ad21ab4f20efede3c52ce2abb907bb99a7a6b64736f6c634300060a0033"
}