{
  "_format": "hh-sol-artifact-1",
  "contractName": "Registry",
  "sourceName": "contracts/Regsitry.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "EmissionControllerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "GovernorChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "LockerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "MahaChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "StakerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "whom",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_old",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "VoterChanged",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EMERGENCY_STOP_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "emissionController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ensureNotPaused",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gaugeVoter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAllAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_maha",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_gaugeVoter",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_locker",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_governor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_staker",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_emissionController",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "locker",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maha",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setEmissionController",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setGovernor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setLocker",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setMAHA",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setStaker",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_new",
          "type": "address"
        }
      ],
      "name": "setVoter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "staker",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "toggleProtocol",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611058806100206000396000f3fe608060405234801561001057600080fd5b50600436106101635760003560e01c80636dee2012116100ce578063a29a43bb11610087578063a29a43bb1461032f578063b641522e14610342578063be21c02614610355578063c42cf53514610368578063d547741f1461037b578063d7b96d4e1461038e578063f9fa2123146103a157600080fd5b80636dee20121461029c57806372233e69146102af57806381ca29a1146102b757806391d14854146102ca5780639516a104146102dd578063a217fddf1461032757600080fd5b80633587647611610120578063358764761461022957806336568abe1461023c5780633de00c361461024f5780634bc2a657146102625780635c975abb146102755780635ebaf1db1461028957600080fd5b806301ffc9a7146101685780630c340a2414610190578063171060ec146101bb5780631bc10541146101d0578063248a9ca3146101f35780632f2ff15d14610216575b600080fd5b61017b610176366004610e62565b6103a9565b60405190151581526020015b60405180910390f35b6004546101a3906001600160a01b031681565b6040516001600160a01b039091168152602001610187565b6101ce6101c9366004610d80565b6103e0565b005b6101e560008051602061100383398151915281565b604051908152602001610187565b6101e5610201366004610e1f565b60009081526020819052604090206001015490565b6101ce610224366004610e37565b610479565b6101ce610237366004610d9a565b6104a3565b6101ce61024a366004610e37565b610594565b6001546101a3906001600160a01b031681565b6101ce610270366004610d80565b610612565b60065461017b90600160a01b900460ff1681565b6005546101a3906001600160a01b031681565b6006546101a3906001600160a01b031681565b6101ce6106a2565b6003546101a3906001600160a01b031681565b61017b6102d8366004610e37565b610738565b600154600354600254600454600554604080516001600160a01b0396871681529486166020860152928516928401929092528316606083015291909116608082015260a001610187565b6101e5600081565b6101ce61033d366004610d80565b610761565b6101ce610350366004610d80565b6107f1565b6101ce610363366004610d80565b610881565b6101ce610376366004610d80565b610911565b6101ce610389366004610e37565b6109a1565b6002546101a3906001600160a01b031681565b6101ce6109c6565b60006001600160e01b03198216637965db0b60e01b14806103da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6103eb600033610738565b6104105760405162461bcd60e51b815260040161040790610f46565b60405180910390fd5b60025460405133917f38ba5bee517df7d94bdc1c81ffad22fb4124b56002795c6c9c9689d092f22aff9161044f916001600160a01b0316908590610ef9565b60405180910390a2600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526020819052604090206001015461049481610a17565b61049e8383610a24565b505050565b600654600160a81b900460ff16156104f35760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610407565b600180546001600160a01b03199081166001600160a01b038a81169190911790925560038054821689841617905560028054821688841617905560048054821687841617905560058054821686841617905560068054909116918416919091179055610560600082610aa8565b61057860008051602061100383398151915282610aa8565b50506006805460ff60a81b1916600160a81b1790555050505050565b6001600160a01b03811633146106045760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b61060e8282610ab2565b5050565b61061d600033610738565b6106395760405162461bcd60e51b815260040161040790610f46565b60035460405133917f9268b9726f38824965649bfcf3b0d32ff50816216bf7cdbd57abc3cc8c5dab1291610678916001600160a01b0316908590610ef9565b60405180910390a2600380546001600160a01b0319166001600160a01b0392909216919091179055565b6106ba60008051602061100383398151915233610738565b806106cb57506106cb600033610738565b6107175760405162461bcd60e51b815260206004820152601b60248201527f6e6f7420676f7665726e616e6365206f7220656d657267656e637900000000006044820152606401610407565b6006805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61076c600033610738565b6107885760405162461bcd60e51b815260040161040790610f46565b60045460405133917f3f1ade8bca28c25684c7fa434465858b42fa8aaade31c7ad794683f8cb136838916107c7916001600160a01b0316908590610ef9565b60405180910390a2600580546001600160a01b0319166001600160a01b0392909216919091179055565b6107fc600033610738565b6108185760405162461bcd60e51b815260040161040790610f46565b60065460405133917f7ecd2f20be54e11699d4206d8493b655613619c8a602b1d28e399ba32a68f08d91610857916001600160a01b0316908590610ef9565b60405180910390a2600680546001600160a01b0319166001600160a01b0392909216919091179055565b61088c600033610738565b6108a85760405162461bcd60e51b815260040161040790610f46565b60015460405133917f2fcfd75e963279beb99392c5e58156adfe8455b1c38d14e8b39aab9952e1588e916108e7916001600160a01b0316908590610ef9565b60405180910390a2600180546001600160a01b0319166001600160a01b0392909216919091179055565b61091c600033610738565b6109385760405162461bcd60e51b815260040161040790610f46565b60045460405133917f3f1ade8bca28c25684c7fa434465858b42fa8aaade31c7ad794683f8cb13683891610977916001600160a01b0316908590610ef9565b60405180910390a2600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081905260409020600101546109bc81610a17565b61049e8383610ab2565b600654600160a01b900460ff1615610a155760405162461bcd60e51b81526020600482015260126024820152711c1c9bdd1bd8dbdb081a5cc81c185d5cd95960721b6044820152606401610407565b565b610a218133610b17565b50565b610a2e8282610738565b61060e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a643390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61060e8282610a24565b610abc8282610738565b1561060e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610b218282610738565b61060e57610b39816001600160a01b03166014610b7b565b610b44836020610b7b565b604051602001610b55929190610e8a565b60408051601f198184030181529082905262461bcd60e51b825261040791600401610f13565b60606000610b8a836002610f86565b610b95906002610f6e565b67ffffffffffffffff811115610bbb57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610be5576020820181803683370190505b509050600360fc1b81600081518110610c0e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610c4b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000610c6f846002610f86565b610c7a906001610f6e565b90505b6001811115610d0e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610cbc57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110610ce057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93610d0781610fd5565b9050610c7d565b508315610d5d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b9392505050565b80356001600160a01b0381168114610d7b57600080fd5b919050565b600060208284031215610d91578081fd5b610d5d82610d64565b600080600080600080600060e0888a031215610db4578283fd5b610dbd88610d64565b9650610dcb60208901610d64565b9550610dd960408901610d64565b9450610de760608901610d64565b9350610df560808901610d64565b9250610e0360a08901610d64565b9150610e1160c08901610d64565b905092959891949750929550565b600060208284031215610e30578081fd5b5035919050565b60008060408385031215610e49578182fd5b82359150610e5960208401610d64565b90509250929050565b600060208284031215610e73578081fd5b81356001600160e01b031981168114610d5d578182fd5b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351610ebc816017850160208801610fa5565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610eed816028840160208801610fa5565b01602801949350505050565b6001600160a01b0392831681529116602082015260400190565b6020815260008251806020840152610f32816040850160208701610fa5565b601f01601f19169190910160400192915050565b6020808252600e908201526d6e6f7420676f7665726e616e636560901b604082015260600190565b60008219821115610f8157610f81610fec565b500190565b6000816000190483118215151615610fa057610fa0610fec565b500290565b60005b83811015610fc0578181015183820152602001610fa8565b83811115610fcf576000848401525b50505050565b600081610fe457610fe4610fec565b506000190190565b634e487b7160e01b600052601160045260246000fdfe06cefb154850384cb30eee1ae7140a3a258768948e755679865172f7ed51edfaa2646970667358221220897db087024e45bd4da507439e16954b35b16e67813ac3c8aa9962577911ad0964736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101635760003560e01c80636dee2012116100ce578063a29a43bb11610087578063a29a43bb1461032f578063b641522e14610342578063be21c02614610355578063c42cf53514610368578063d547741f1461037b578063d7b96d4e1461038e578063f9fa2123146103a157600080fd5b80636dee20121461029c57806372233e69146102af57806381ca29a1146102b757806391d14854146102ca5780639516a104146102dd578063a217fddf1461032757600080fd5b80633587647611610120578063358764761461022957806336568abe1461023c5780633de00c361461024f5780634bc2a657146102625780635c975abb146102755780635ebaf1db1461028957600080fd5b806301ffc9a7146101685780630c340a2414610190578063171060ec146101bb5780631bc10541146101d0578063248a9ca3146101f35780632f2ff15d14610216575b600080fd5b61017b610176366004610e62565b6103a9565b60405190151581526020015b60405180910390f35b6004546101a3906001600160a01b031681565b6040516001600160a01b039091168152602001610187565b6101ce6101c9366004610d80565b6103e0565b005b6101e560008051602061100383398151915281565b604051908152602001610187565b6101e5610201366004610e1f565b60009081526020819052604090206001015490565b6101ce610224366004610e37565b610479565b6101ce610237366004610d9a565b6104a3565b6101ce61024a366004610e37565b610594565b6001546101a3906001600160a01b031681565b6101ce610270366004610d80565b610612565b60065461017b90600160a01b900460ff1681565b6005546101a3906001600160a01b031681565b6006546101a3906001600160a01b031681565b6101ce6106a2565b6003546101a3906001600160a01b031681565b61017b6102d8366004610e37565b610738565b600154600354600254600454600554604080516001600160a01b0396871681529486166020860152928516928401929092528316606083015291909116608082015260a001610187565b6101e5600081565b6101ce61033d366004610d80565b610761565b6101ce610350366004610d80565b6107f1565b6101ce610363366004610d80565b610881565b6101ce610376366004610d80565b610911565b6101ce610389366004610e37565b6109a1565b6002546101a3906001600160a01b031681565b6101ce6109c6565b60006001600160e01b03198216637965db0b60e01b14806103da57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6103eb600033610738565b6104105760405162461bcd60e51b815260040161040790610f46565b60405180910390fd5b60025460405133917f38ba5bee517df7d94bdc1c81ffad22fb4124b56002795c6c9c9689d092f22aff9161044f916001600160a01b0316908590610ef9565b60405180910390a2600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526020819052604090206001015461049481610a17565b61049e8383610a24565b505050565b600654600160a81b900460ff16156104f35760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610407565b600180546001600160a01b03199081166001600160a01b038a81169190911790925560038054821689841617905560028054821688841617905560048054821687841617905560058054821686841617905560068054909116918416919091179055610560600082610aa8565b61057860008051602061100383398151915282610aa8565b50506006805460ff60a81b1916600160a81b1790555050505050565b6001600160a01b03811633146106045760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610407565b61060e8282610ab2565b5050565b61061d600033610738565b6106395760405162461bcd60e51b815260040161040790610f46565b60035460405133917f9268b9726f38824965649bfcf3b0d32ff50816216bf7cdbd57abc3cc8c5dab1291610678916001600160a01b0316908590610ef9565b60405180910390a2600380546001600160a01b0319166001600160a01b0392909216919091179055565b6106ba60008051602061100383398151915233610738565b806106cb57506106cb600033610738565b6107175760405162461bcd60e51b815260206004820152601b60248201527f6e6f7420676f7665726e616e6365206f7220656d657267656e637900000000006044820152606401610407565b6006805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61076c600033610738565b6107885760405162461bcd60e51b815260040161040790610f46565b60045460405133917f3f1ade8bca28c25684c7fa434465858b42fa8aaade31c7ad794683f8cb136838916107c7916001600160a01b0316908590610ef9565b60405180910390a2600580546001600160a01b0319166001600160a01b0392909216919091179055565b6107fc600033610738565b6108185760405162461bcd60e51b815260040161040790610f46565b60065460405133917f7ecd2f20be54e11699d4206d8493b655613619c8a602b1d28e399ba32a68f08d91610857916001600160a01b0316908590610ef9565b60405180910390a2600680546001600160a01b0319166001600160a01b0392909216919091179055565b61088c600033610738565b6108a85760405162461bcd60e51b815260040161040790610f46565b60015460405133917f2fcfd75e963279beb99392c5e58156adfe8455b1c38d14e8b39aab9952e1588e916108e7916001600160a01b0316908590610ef9565b60405180910390a2600180546001600160a01b0319166001600160a01b0392909216919091179055565b61091c600033610738565b6109385760405162461bcd60e51b815260040161040790610f46565b60045460405133917f3f1ade8bca28c25684c7fa434465858b42fa8aaade31c7ad794683f8cb13683891610977916001600160a01b0316908590610ef9565b60405180910390a2600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152602081905260409020600101546109bc81610a17565b61049e8383610ab2565b600654600160a01b900460ff1615610a155760405162461bcd60e51b81526020600482015260126024820152711c1c9bdd1bd8dbdb081a5cc81c185d5cd95960721b6044820152606401610407565b565b610a218133610b17565b50565b610a2e8282610738565b61060e576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a643390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61060e8282610a24565b610abc8282610738565b1561060e576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610b218282610738565b61060e57610b39816001600160a01b03166014610b7b565b610b44836020610b7b565b604051602001610b55929190610e8a565b60408051601f198184030181529082905262461bcd60e51b825261040791600401610f13565b60606000610b8a836002610f86565b610b95906002610f6e565b67ffffffffffffffff811115610bbb57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610be5576020820181803683370190505b509050600360fc1b81600081518110610c0e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610c4b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000610c6f846002610f86565b610c7a906001610f6e565b90505b6001811115610d0e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610cbc57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110610ce057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93610d0781610fd5565b9050610c7d565b508315610d5d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610407565b9392505050565b80356001600160a01b0381168114610d7b57600080fd5b919050565b600060208284031215610d91578081fd5b610d5d82610d64565b600080600080600080600060e0888a031215610db4578283fd5b610dbd88610d64565b9650610dcb60208901610d64565b9550610dd960408901610d64565b9450610de760608901610d64565b9350610df560808901610d64565b9250610e0360a08901610d64565b9150610e1160c08901610d64565b905092959891949750929550565b600060208284031215610e30578081fd5b5035919050565b60008060408385031215610e49578182fd5b82359150610e5960208401610d64565b90509250929050565b600060208284031215610e73578081fd5b81356001600160e01b031981168114610d5d578182fd5b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351610ebc816017850160208801610fa5565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610eed816028840160208801610fa5565b01602801949350505050565b6001600160a01b0392831681529116602082015260400190565b6020815260008251806020840152610f32816040850160208701610fa5565b601f01601f19169190910160400192915050565b6020808252600e908201526d6e6f7420676f7665726e616e636560901b604082015260600190565b60008219821115610f8157610f81610fec565b500190565b6000816000190483118215151615610fa057610fa0610fec565b500290565b60005b83811015610fc0578181015183820152602001610fa8565b83811115610fcf576000848401525b50505050565b600081610fe457610fe4610fec565b506000190190565b634e487b7160e01b600052601160045260246000fdfe06cefb154850384cb30eee1ae7140a3a258768948e755679865172f7ed51edfaa2646970667358221220897db087024e45bd4da507439e16954b35b16e67813ac3c8aa9962577911ad0964736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
