{
  "contractName": "CRVoting",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract Controller",
          "name": "_controller",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "ModuleCached",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "commitment",
          "type": "bytes32"
        }
      ],
      "name": "VoteCommitted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "outcome",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "leaker",
          "type": "address"
        }
      ],
      "name": "VoteLeaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "voter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "outcome",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "revealer",
          "type": "address"
        }
      ],
      "name": "VoteRevealed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "voteId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "possibleOutcomes",
          "type": "uint8"
        }
      ],
      "name": "VotingCreated",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_ids",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_addresses",
          "type": "address[]"
        }
      ],
      "name": "cacheModules",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "bytes32",
          "name": "_commitment",
          "type": "bytes32"
        }
      ],
      "name": "commit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_possibleOutcomes",
          "type": "uint8"
        }
      ],
      "name": "createVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getController",
      "outputs": [
        {
          "internalType": "contract Controller",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getMaxAllowedOutcome",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        }
      ],
      "name": "getOutcomeTally",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "getVoterOutcome",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        },
        {
          "internalType": "address[]",
          "name": "_voters",
          "type": "address[]"
        }
      ],
      "name": "getVotersInFavorOf",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        }
      ],
      "name": "getWinningOutcome",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "hasVotedInFavorOf",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "hashVote",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        }
      ],
      "name": "isValidOutcome",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "leak",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_voteId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_voter",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "_outcome",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "reveal",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001abd38038062001abd833981810160405260208110156200003757600080fd5b5051806200004e816001600160e01b036200013916565b6040518060400160405280601b81526020017f4354445f434f4e54524f4c4c45525f4e4f545f434f4e5452414354000000000081525090620001115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d5578181015183820152602001620000bb565b50505050905090810190601f168015620001035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600080546001600160a01b0319166001600160a01b0392909216919091179055506200015e565b60006001600160a01b038216620001535750600062000159565b50803b15155b919050565b61194f806200016e6000396000f3fe608060405234801561001057600080fd5b50600436106100ca5760003560e01c806385dbcf791161007c57806385dbcf79146103465780638c8838fb1461037e5780639bd87ba3146103aa578063cfa558ba146103d0578063e213137814610419578063e2e7ed9f1461043f578063f2f0387714610465576100ca565b8063084d72f4146100cf5780630bc67c2b1461010257806318ce8f561461013f5780632aee0e661461020c5780633018205f146102295780634e112d361461024d5780635f38b99c1461030b575b600080fd5b6100ec600480360360208110156100e557600080fd5b5035610488565b6040805160ff9092168252519081900360200190f35b61013d6004803603608081101561011857600080fd5b508035906001600160a01b036020820135169060ff604082013516906060013561057b565b005b6101bc6004803603606081101561015557600080fd5b81359160ff60208201351691810190606081016040820135600160201b81111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111600160201b831117156101b157600080fd5b5090925090506106a1565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101f85781810151838201526020016101e0565b505050509050019250505060405180910390f35b6100ec6004803603602081101561022257600080fd5b5035610804565b6102316108ab565b604080516001600160a01b039092168252519081900360200190f35b61013d6004803603604081101561026357600080fd5b810190602081018135600160201b81111561027d57600080fd5b82018360208201111561028f57600080fd5b803590602001918460208302840111600160201b831117156102b057600080fd5b919390929091602081019035600160201b8111156102cd57600080fd5b8201836020820111156102df57600080fd5b803590602001918460208302840111600160201b8311171561030057600080fd5b5090925090506108ba565b61013d6004803603608081101561032157600080fd5b508035906001600160a01b036020820135169060ff6040820135169060600135610aaf565b61036c6004803603604081101561035c57600080fd5b508035906020013560ff16610c6d565b60408051918252519081900360200190f35b6100ec6004803603604081101561039457600080fd5b50803590602001356001600160a01b0316610d1f565b61013d600480360360408110156103c057600080fd5b508035906020013560ff16610dde565b610405600480360360608110156103e657600080fd5b50803590602081013560ff1690604001356001600160a01b03166110ef565b604080519115158252519081900360200190f35b61036c6004803603604081101561042f57600080fd5b5060ff81351690602001356111b5565b6104056004803603604081101561045557600080fd5b508035906020013560ff166111c8565b61013d6004803603604081101561047b57600080fd5b508035906020013561126a565b600081815260026020526040812082906104a1816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061054e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105135781810151838201526020016104fb565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000848152600260205260409020805460ff16801561056e5780610571565b60025b9695505050505050565b60008481526002602052604090208490610594816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906106045760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008681526002602090815260408083206001600160a01b038916845260010190915290206106358186866113ef565b61063e87611508565b6001818101805460ff191690911790556040805160ff8716815233602082015281516001600160a01b038916928a927f2a3d1c99ac13aab42ef0ff1a74faaedd1cf1790b9315a93fcb82044d616a4753929081900390910190a350505050505050565b600084815260026020526040902060609085906106bd816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061072d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000878152600260209081526040918290208251878152878302810190920190925260609086801561076a578160200160208202803883390190505b50905060005b868110156107f75782600101600089898481811061078a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060010160009054906101000a900460ff1660ff168960ff16148282815181106107df57fe5b91151560209283029190910190910152600101610770565b5098975050505050505050565b6000818152600260205260408120829061081d816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061088d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505060009182525060026020526040902054610100900460ff1690565b6000546001600160a01b031690565b60005460408051808201909152601981527821aa222fa9a2a72222a92fa727aa2fa1a7a72a2927a62622a960391b6020820152906001600160a01b031633146109445760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060408051808201909152601f81527f4354445f494e56414c49445f4d4f44554c45535f43414348455f494e5055540060208201528382146109c75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060005b83811015610aa8578282828181106109df57fe5b905060200201356001600160a01b0316600160008787858181106109ff57fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f60bd2091d76fc7f3330a4d5e9fd21180cf5de4b91e9972d2d56f41896c036a40858583818110610a6557fe5b90506020020135848484818110610a7857fe5b60408051948552602091820293909301356001600160a01b031690840152508051918290030190a16001016109cb565b5050505050565b60008481526002602052604090208490610ac8816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610b385760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008681526002602090815260408083206001600160a01b038916845260018101909252909120610b6b8187876113ef565b610b758287611576565b604051806040016040528060138152602001724352565f494e56414c49445f4f5554434f4d4560681b81525090610bed5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000610bfa898961159b565b60018301805460ff191660ff8a161790559050610c18838883611649565b6040805160ff8916815233602082015281516001600160a01b038b16928c927f2531a3609c003cd8a11c3e56f8791d26fec7463d7c89ff80bfb65ca74497b3a4929081900390910190a3505050505050505050565b60008281526002602052604081208390610c86816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610cf65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505060009283525060026020818152604080852060ff94909416855292909101905290205490565b60008281526002602052604081208390610d38816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610da85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5050506000928352506002602090815260408084206001600160a01b039390931684526001928301909152909120015460ff1690565b6000805460408051636dcdf72360e11b8152815184936001600160a01b03169263db9bee469260048082019391829003018186803b158015610e1f57600080fd5b505afa158015610e33573d6000803e3d6000fd5b505050506040513d6040811015610e4957600080fd5b508051602091820151604080518082019091528381527f4354445f53454e445f4e4f545f43555252454e545f444953505554455f4d4752938101939093529093509150336001600160a01b03841614610ee35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060408051808201909152601f81527f4354445f53454e445f4e4f545f4143544956455f444953505554455f4d47520060208201528115610f655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50600260ff841610801590610f7e575060fc60ff841611155b6040518060400160405280601b81526020017f4352565f494e56414c49445f4f5554434f4d45535f414d4f554e540000000000815250906110005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000848152600260205260409020611018816113e1565b15604051806040016040528060178152602001764352565f564f54455f414c52454144595f45584953545360481b815250906110955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50805460ff6002860181166101000261ff00199092169190911782556040805191861682525186917f683c4483cc0815ec43f0fbd7ddb39954f33ed12e302e8832a188e26c1e29bbe4919081900360200190a25050505050565b60008381526002602052604081208490611108816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906111785760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5050506000938452506002602090815260408085206001600160a01b0393909316855260019283019091529092209091015460ff91821691161490565b60006111c183836116e2565b9392505050565b600082815260026020526040812083906111e1816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906112515760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008581526002602052604090206105718186611576565b60008281526002602052604090208290611283816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906112f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50600084815260026020908152604080832033845260010182529182902080548351808501909452601a84527f4352565f564f54455f414c52454144595f434f4d4d4954544544000000000000928401929092529190156113955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506113a08533611721565b838155604080518581529051339187917f1f4e2aa7825ef02e85293e2de66cfbcb326af2632b558996e546bb1ef3e8764d9181900360200190a35050505050565b54610100900460ff16151590565b600183015460408051808201909152601981527810d49597d593d51157d053149150511657d491559150531151603a1b60208201529060ff16156114745760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5061147f82826116e2565b835460408051808201909152601b81527f4352565f494e56414c49445f434f4d4d49544d454e545f53414c540000000000602082015291146115025760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505050565b60006115126117aa565b9050806001600160a01b03166315fe5268836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b505050505050565b6000600260ff8316108015906111c15750509054610100900460ff9081169116111590565b6000806115a66117aa565b90506000816001600160a01b031663c1361a7c86866040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b505050506040513d602081101561163457600080fd5b505167ffffffffffffffff1695945050505050565b6116538383611576565b61165c576116dd565b60ff82166000908152600284016020526040812054611681908363ffffffff6117da16565b60ff808516600090815260028701602052604080822084905587549092168082529190205491925090808311806116c7575080831480156116c757508160ff168560ff16105b1561156e575050835460ff191660ff8416178455505b505050565b6040805160f89390931b6001600160f81b0319166020808501919091526021808501939093528151808503909301835260419093019052805191012090565b600061172b6117aa565b9050806001600160a01b03166306349cfa84846040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b50505050505050565b60006117d57f14a6c70f0f6d449c014c7bbc9e68e31e79e8474fb03b7194df83109a2d888ae6611860565b905090565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b602082015260009083830190848210156118585760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b509392505050565b6000818152600160209081526040808320548151808301909252601282527110d51117d353d115531157d393d517d4d15560721b928201929092526001600160a01b0390911690816118f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b509291505056fe4352565f564f54455f444f45535f4e4f545f4558495354000000000000000000a265627a7a72315820b9c049907ce3557cd2e6f069116e2ba7c4f34c6138c9e8d9ab70249171837e6864736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ca5760003560e01c806385dbcf791161007c57806385dbcf79146103465780638c8838fb1461037e5780639bd87ba3146103aa578063cfa558ba146103d0578063e213137814610419578063e2e7ed9f1461043f578063f2f0387714610465576100ca565b8063084d72f4146100cf5780630bc67c2b1461010257806318ce8f561461013f5780632aee0e661461020c5780633018205f146102295780634e112d361461024d5780635f38b99c1461030b575b600080fd5b6100ec600480360360208110156100e557600080fd5b5035610488565b6040805160ff9092168252519081900360200190f35b61013d6004803603608081101561011857600080fd5b508035906001600160a01b036020820135169060ff604082013516906060013561057b565b005b6101bc6004803603606081101561015557600080fd5b81359160ff60208201351691810190606081016040820135600160201b81111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111600160201b831117156101b157600080fd5b5090925090506106a1565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101f85781810151838201526020016101e0565b505050509050019250505060405180910390f35b6100ec6004803603602081101561022257600080fd5b5035610804565b6102316108ab565b604080516001600160a01b039092168252519081900360200190f35b61013d6004803603604081101561026357600080fd5b810190602081018135600160201b81111561027d57600080fd5b82018360208201111561028f57600080fd5b803590602001918460208302840111600160201b831117156102b057600080fd5b919390929091602081019035600160201b8111156102cd57600080fd5b8201836020820111156102df57600080fd5b803590602001918460208302840111600160201b8311171561030057600080fd5b5090925090506108ba565b61013d6004803603608081101561032157600080fd5b508035906001600160a01b036020820135169060ff6040820135169060600135610aaf565b61036c6004803603604081101561035c57600080fd5b508035906020013560ff16610c6d565b60408051918252519081900360200190f35b6100ec6004803603604081101561039457600080fd5b50803590602001356001600160a01b0316610d1f565b61013d600480360360408110156103c057600080fd5b508035906020013560ff16610dde565b610405600480360360608110156103e657600080fd5b50803590602081013560ff1690604001356001600160a01b03166110ef565b604080519115158252519081900360200190f35b61036c6004803603604081101561042f57600080fd5b5060ff81351690602001356111b5565b6104056004803603604081101561045557600080fd5b508035906020013560ff166111c8565b61013d6004803603604081101561047b57600080fd5b508035906020013561126a565b600081815260026020526040812082906104a1816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061054e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105135781810151838201526020016104fb565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000848152600260205260409020805460ff16801561056e5780610571565b60025b9695505050505050565b60008481526002602052604090208490610594816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906106045760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008681526002602090815260408083206001600160a01b038916845260010190915290206106358186866113ef565b61063e87611508565b6001818101805460ff191690911790556040805160ff8716815233602082015281516001600160a01b038916928a927f2a3d1c99ac13aab42ef0ff1a74faaedd1cf1790b9315a93fcb82044d616a4753929081900390910190a350505050505050565b600084815260026020526040902060609085906106bd816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061072d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000878152600260209081526040918290208251878152878302810190920190925260609086801561076a578160200160208202803883390190505b50905060005b868110156107f75782600101600089898481811061078a57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060010160009054906101000a900460ff1660ff168960ff16148282815181106107df57fe5b91151560209283029190910190910152600101610770565b5098975050505050505050565b6000818152600260205260408120829061081d816113e1565b6040518060400160405280601781526020016000805160206118fb8339815191528152509061088d5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505060009182525060026020526040902054610100900460ff1690565b6000546001600160a01b031690565b60005460408051808201909152601981527821aa222fa9a2a72222a92fa727aa2fa1a7a72a2927a62622a960391b6020820152906001600160a01b031633146109445760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060408051808201909152601f81527f4354445f494e56414c49445f4d4f44554c45535f43414348455f494e5055540060208201528382146109c75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060005b83811015610aa8578282828181106109df57fe5b905060200201356001600160a01b0316600160008787858181106109ff57fe5b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f60bd2091d76fc7f3330a4d5e9fd21180cf5de4b91e9972d2d56f41896c036a40858583818110610a6557fe5b90506020020135848484818110610a7857fe5b60408051948552602091820293909301356001600160a01b031690840152508051918290030190a16001016109cb565b5050505050565b60008481526002602052604090208490610ac8816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610b385760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008681526002602090815260408083206001600160a01b038916845260018101909252909120610b6b8187876113ef565b610b758287611576565b604051806040016040528060138152602001724352565f494e56414c49445f4f5554434f4d4560681b81525090610bed5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000610bfa898961159b565b60018301805460ff191660ff8a161790559050610c18838883611649565b6040805160ff8916815233602082015281516001600160a01b038b16928c927f2531a3609c003cd8a11c3e56f8791d26fec7463d7c89ff80bfb65ca74497b3a4929081900390910190a3505050505050505050565b60008281526002602052604081208390610c86816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610cf65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505060009283525060026020818152604080852060ff94909416855292909101905290205490565b60008281526002602052604081208390610d38816113e1565b6040518060400160405280601781526020016000805160206118fb83398151915281525090610da85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5050506000928352506002602090815260408084206001600160a01b039390931684526001928301909152909120015460ff1690565b6000805460408051636dcdf72360e11b8152815184936001600160a01b03169263db9bee469260048082019391829003018186803b158015610e1f57600080fd5b505afa158015610e33573d6000803e3d6000fd5b505050506040513d6040811015610e4957600080fd5b508051602091820151604080518082019091528381527f4354445f53454e445f4e4f545f43555252454e545f444953505554455f4d4752938101939093529093509150336001600160a01b03841614610ee35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060408051808201909152601f81527f4354445f53454e445f4e4f545f4143544956455f444953505554455f4d47520060208201528115610f655760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50600260ff841610801590610f7e575060fc60ff841611155b6040518060400160405280601b81526020017f4352565f494e56414c49445f4f5554434f4d45535f414d4f554e540000000000815250906110005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506000848152600260205260409020611018816113e1565b15604051806040016040528060178152602001764352565f564f54455f414c52454144595f45584953545360481b815250906110955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50805460ff6002860181166101000261ff00199092169190911782556040805191861682525186917f683c4483cc0815ec43f0fbd7ddb39954f33ed12e302e8832a188e26c1e29bbe4919081900360200190a25050505050565b60008381526002602052604081208490611108816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906111785760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5050506000938452506002602090815260408085206001600160a01b0393909316855260019283019091529092209091015460ff91821691161490565b60006111c183836116e2565b9392505050565b600082815260026020526040812083906111e1816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906112515760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5060008581526002602052604090206105718186611576565b60008281526002602052604090208290611283816113e1565b6040518060400160405280601781526020016000805160206118fb833981519152815250906112f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50600084815260026020908152604080832033845260010182529182902080548351808501909452601a84527f4352565f564f54455f414c52454144595f434f4d4d4954544544000000000000928401929092529190156113955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b506113a08533611721565b838155604080518581529051339187917f1f4e2aa7825ef02e85293e2de66cfbcb326af2632b558996e546bb1ef3e8764d9181900360200190a35050505050565b54610100900460ff16151590565b600183015460408051808201909152601981527810d49597d593d51157d053149150511657d491559150531151603a1b60208201529060ff16156114745760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b5061147f82826116e2565b835460408051808201909152601b81527f4352565f494e56414c49445f434f4d4d49544d454e545f53414c540000000000602082015291146115025760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b50505050565b60006115126117aa565b9050806001600160a01b03166315fe5268836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561155a57600080fd5b505af115801561156e573d6000803e3d6000fd5b505050505050565b6000600260ff8316108015906111c15750509054610100900460ff9081169116111590565b6000806115a66117aa565b90506000816001600160a01b031663c1361a7c86866040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050602060405180830381600087803b15801561160a57600080fd5b505af115801561161e573d6000803e3d6000fd5b505050506040513d602081101561163457600080fd5b505167ffffffffffffffff1695945050505050565b6116538383611576565b61165c576116dd565b60ff82166000908152600284016020526040812054611681908363ffffffff6117da16565b60ff808516600090815260028701602052604080822084905587549092168082529190205491925090808311806116c7575080831480156116c757508160ff168560ff16105b1561156e575050835460ff191660ff8416178455505b505050565b6040805160f89390931b6001600160f81b0319166020808501919091526021808501939093528151808503909301835260419093019052805191012090565b600061172b6117aa565b9050806001600160a01b03166306349cfa84846040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b50505050505050565b60006117d57f14a6c70f0f6d449c014c7bbc9e68e31e79e8474fb03b7194df83109a2d888ae6611860565b905090565b6040805180820190915260118152704d4154485f4144445f4f564552464c4f5760781b602082015260009083830190848210156118585760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b509392505050565b6000818152600160209081526040808320548151808301909252601282527110d51117d353d115531157d393d517d4d15560721b928201929092526001600160a01b0390911690816118f35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105135781810151838201526020016104fb565b509291505056fe4352565f564f54455f444f45535f4e4f545f4558495354000000000000000000a265627a7a72315820b9c049907ce3557cd2e6f069116e2ba7c4f34c6138c9e8d9ab70249171837e6864736f6c63430005110032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
