{
  "_format": "hh-sol-artifact-1",
  "contractName": "TestSeizableSecurity",
  "sourceName": "contracts/soma/SecurityTokens/extensions/tests/TestSeizableSecurity.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Seized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "GLOBAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_SEIZE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SOMA",
      "outputs": [
        {
          "internalType": "contract ISOMA",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "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": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenHolder",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "seize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf60805234801561002857600080fd5b50608051611db061007c6000396000818161026c015281816104690152818161058a015281816106260152818161083c015281816108e20152818161097e01528181610a610152610dbf0152611db06000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80635c975abb116100c3578063a457c2d71161007c578063a457c2d7146102f3578063a9059cbb14610306578063ac9650d814610319578063c72460ee14610339578063dd62ed3e14610343578063eb9253c01461035657600080fd5b80635c975abb1461025f57806363727fc21461026757806370a08231146102a65780638456cb59146102d057806391d14854146102d857806395d89b41146102eb57600080fd5b8063301392801161011557806330139280146101e6578063313ce5671461020d578063395093511461021c5780633f4ba83a1461022f57806340c10f19146102395780634cd88b761461024c57600080fd5b806301ffc9a71461015d57806306fdde0314610185578063095ea7b31461019a57806318160ddd146101ad57806323b872dd146101c0578063248a9ca3146101d3575b600080fd5b61017061016b36600461174e565b610369565b60405190151581526020015b60405180910390f35b61018d610394565b60405161017c91906117c8565b6101706101a83660046117f0565b610427565b610163545b60405190815260200161017c565b6101706101ce36600461181c565b61043f565b6101b26101e136600461185d565b610465565b6101b27fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b6040516012815260200161017c565b61017061022a3660046117f0565b610557565b610237610579565b005b6102376102473660046117f0565b61070d565b61023761025a366004611919565b61071b565b610170610838565b61028e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161017c565b6101b26102b436600461197d565b6001600160a01b03166000908152610161602052604090205490565b6102376108d1565b6101706102e636600461199a565b610a5d565b61018d610b54565b6101706103013660046117f0565b610b64565b6101706103143660046117f0565b610bea565b61032c6103273660046119ca565b610bf8565b60405161017c9190611a3f565b6101b261012d5481565b6101b2610351366004611aa1565b610ced565b6102376103643660046117f0565b610d19565b60006001600160e01b031982166303ae494f60e61b148061038e575061038e82610eba565b92915050565b606061016480546103a490611acf565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090611acf565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b5050505050905090565b600033610435818585610edf565b5060019392505050565b60003361044d858285611004565b61045885858561107e565b60019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190611b09565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b815260040161051691815260200190565b602060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038e9190611b26565b60003361043581858561056a8383610ced565b6105749190611b55565b610edf565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190611b09565b6001600160a01b031614806106b15750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190611b09565b6001600160a01b0316145b6107025760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064015b60405180910390fd5b61070a61124e565b50565b61071782826112a0565b5050565b600054610100900460ff161580801561073b5750600054600160ff909116105b806107555750303b158015610755575060005460ff166001145b6107b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f9565b6000805460ff1916600117905580156107db576000805461ff0019166101001790555b6107e3611381565b6107ed83836113bb565b8015610833576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bc9190611b68565b806108cc57505060335460ff1690565b905090565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190611b09565b6001600160a01b03161480610a095750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190611b09565b6001600160a01b0316145b610a555760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016106f9565b61070a6113ec565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611b09565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045e9190611b68565b606061016580546103a490611acf565b60003381610b728286610ced565b905083811015610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106f9565b610bdf8286868403610edf565b506001949350505050565b60003361043581858561107e565b60608167ffffffffffffffff811115610c1357610c13611876565b604051908082528060200260200182016040528015610c4657816020015b6060815260200190600190039081610c315790505b50905060005b82811015610ce657610cb630858584818110610c6a57610c6a611b8a565b9050602002810190610c7c9190611ba0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142992505050565b828281518110610cc857610cc8611b8a565b60200260200101819052508080610cde90611bee565b915050610c4c565b5092915050565b6001600160a01b0391821660009081526101626020908152604080832093909416825291909152205490565b61012e805460ff191660011790556000610d303390565b9050610d3f61012d5482610a5d565b80610d6f5750610d6f7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef982610a5d565b610dbb5760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a4544000060448201526064016106f9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f9190611b09565b9050610e4c84828561151d565b806001600160a01b0316846001600160a01b0316610e673390565b6001600160a01b03167fa9aec5d8b86e2fa2fd6ac3af62f2622e3dfdab1967d4cbbb56a5df7d74cb887c86604051610ea191815260200190565b60405180910390a4505061012e805460ff191690555050565b60006001600160e01b0319821663b55bd4f760e01b148061038e575061038e82611528565b6001600160a01b038316610f415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106f9565b6001600160a01b038216610fa25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106f9565b6001600160a01b038381166000818152610162602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110108484610ced565b90506000198114611078578181101561106b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106f9565b6110788484848403610edf565b50505050565b6001600160a01b0383166110e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f9565b6001600160a01b0382166111445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f9565b6001600160a01b03831660009081526101616020526040902054818110156111bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106f9565b6001600160a01b03808516600090815261016160205260408082208585039055918516815290812080548492906111f5908490611b55565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161124191815260200190565b60405180910390a3611078565b61125661155d565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166112f65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106f9565b8061016360008282546113099190611b55565b90915550506001600160a01b0382166000908152610161602052604081208054839290611337908490611b55565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6113896115a8565b6113916115a8565b6113996115a8565b6113a16115a8565b6113a96115a8565b6113b16115cf565b6113b9611602565b565b600054610100900460ff166113e25760405162461bcd60e51b81526004016106f990611c07565b610717828261168b565b6113f46116cd565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112833390565b60606001600160a01b0383163b6114915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106f9565b600080846001600160a01b0316846040516114ac9190611c52565b600060405180830381855af49150503d80600081146114e7576040519150601f19603f3d011682016040523d82523d6000602084013e6114ec565b606091505b50915091506115148282604051806060016040528060278152602001611d7d60279139611715565b95945050505050565b61083383838361107e565b60006001600160e01b0319821663d86f1ca160e01b148061038e57506301ffc9a760e01b6001600160e01b031983161461038e565b611565610838565b6113b95760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106f9565b600054610100900460ff166113b95760405162461bcd60e51b81526004016106f990611c07565b600054610100900460ff166115f65760405162461bcd60e51b81526004016106f990611c07565b6033805460ff19169055565b600054610100900460ff166116295760405162461bcd60e51b81526004016106f990611c07565b6040516bffffffffffffffffffffffff193060601b1660208201527fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9603482015260540160408051601f19818403018152919052805160209091012061012d55565b600054610100900460ff166116b25760405162461bcd60e51b81526004016106f990611c07565b6101646116bf8382611cbc565b506101656108338282611cbc565b6116d5610838565b156113b95760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106f9565b6060831561172457508161045e565b8251156117345782518084602001fd5b8160405162461bcd60e51b81526004016106f991906117c8565b60006020828403121561176057600080fd5b81356001600160e01b03198116811461045e57600080fd5b60005b8381101561179357818101518382015260200161177b565b50506000910152565b600081518084526117b4816020860160208601611778565b601f01601f19169290920160200192915050565b60208152600061045e602083018461179c565b6001600160a01b038116811461070a57600080fd5b6000806040838503121561180357600080fd5b823561180e816117db565b946020939093013593505050565b60008060006060848603121561183157600080fd5b833561183c816117db565b9250602084013561184c816117db565b929592945050506040919091013590565b60006020828403121561186f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261189d57600080fd5b813567ffffffffffffffff808211156118b8576118b8611876565b604051601f8301601f19908116603f011681019082821181831017156118e0576118e0611876565b816040528381528660208588010111156118f957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561192c57600080fd5b823567ffffffffffffffff8082111561194457600080fd5b6119508683870161188c565b9350602085013591508082111561196657600080fd5b506119738582860161188c565b9150509250929050565b60006020828403121561198f57600080fd5b813561045e816117db565b600080604083850312156119ad57600080fd5b8235915060208301356119bf816117db565b809150509250929050565b600080602083850312156119dd57600080fd5b823567ffffffffffffffff808211156119f557600080fd5b818501915085601f830112611a0957600080fd5b813581811115611a1857600080fd5b8660208260051b8501011115611a2d57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611a9457603f19888603018452611a8285835161179c565b94509285019290850190600101611a66565b5092979650505050505050565b60008060408385031215611ab457600080fd5b8235611abf816117db565b915060208301356119bf816117db565b600181811c90821680611ae357607f821691505b602082108103611b0357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611b1b57600080fd5b815161045e816117db565b600060208284031215611b3857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561038e5761038e611b3f565b600060208284031215611b7a57600080fd5b8151801515811461045e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611bb757600080fd5b83018035915067ffffffffffffffff821115611bd257600080fd5b602001915036819003821315611be757600080fd5b9250929050565b600060018201611c0057611c00611b3f565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611c64818460208701611778565b9190910192915050565b601f82111561083357600081815260208120601f850160051c81016020861015611c955750805b601f850160051c820191505b81811015611cb457828155600101611ca1565b505050505050565b815167ffffffffffffffff811115611cd657611cd6611876565b611cea81611ce48454611acf565b84611c6e565b602080601f831160018114611d1f5760008415611d075750858301515b600019600386901b1c1916600185901b178555611cb4565b600085815260208120601f198616915b82811015611d4e57888601518255948401946001909101908401611d2f565b5085821015611d6c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c80635c975abb116100c3578063a457c2d71161007c578063a457c2d7146102f3578063a9059cbb14610306578063ac9650d814610319578063c72460ee14610339578063dd62ed3e14610343578063eb9253c01461035657600080fd5b80635c975abb1461025f57806363727fc21461026757806370a08231146102a65780638456cb59146102d057806391d14854146102d857806395d89b41146102eb57600080fd5b8063301392801161011557806330139280146101e6578063313ce5671461020d578063395093511461021c5780633f4ba83a1461022f57806340c10f19146102395780634cd88b761461024c57600080fd5b806301ffc9a71461015d57806306fdde0314610185578063095ea7b31461019a57806318160ddd146101ad57806323b872dd146101c0578063248a9ca3146101d3575b600080fd5b61017061016b36600461174e565b610369565b60405190151581526020015b60405180910390f35b61018d610394565b60405161017c91906117c8565b6101706101a83660046117f0565b610427565b610163545b60405190815260200161017c565b6101706101ce36600461181c565b61043f565b6101b26101e136600461185d565b610465565b6101b27fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef981565b6040516012815260200161017c565b61017061022a3660046117f0565b610557565b610237610579565b005b6102376102473660046117f0565b61070d565b61023761025a366004611919565b61071b565b610170610838565b61028e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161017c565b6101b26102b436600461197d565b6001600160a01b03166000908152610161602052604090205490565b6102376108d1565b6101706102e636600461199a565b610a5d565b61018d610b54565b6101706103013660046117f0565b610b64565b6101706103143660046117f0565b610bea565b61032c6103273660046119ca565b610bf8565b60405161017c9190611a3f565b6101b261012d5481565b6101b2610351366004611aa1565b610ced565b6102376103643660046117f0565b610d19565b60006001600160e01b031982166303ae494f60e61b148061038e575061038e82610eba565b92915050565b606061016480546103a490611acf565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090611acf565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b5050505050905090565b600033610435818585610edf565b5060019392505050565b60003361044d858285611004565b61045885858561107e565b60019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190611b09565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b815260040161051691815260200190565b602060405180830381865afa158015610533573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038e9190611b26565b60003361043581858561056a8383610ced565b6105749190611b55565b610edf565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190611b09565b6001600160a01b031614806106b15750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190611b09565b6001600160a01b0316145b6107025760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064015b60405180910390fd5b61070a61124e565b50565b61071782826112a0565b5050565b600054610100900460ff161580801561073b5750600054600160ff909116105b806107555750303b158015610755575060005460ff166001145b6107b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106f9565b6000805460ff1916600117905580156107db576000805461ff0019166101001790555b6107e3611381565b6107ed83836113bb565b8015610833576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bc9190611b68565b806108cc57505060335460ff1690565b905090565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190611b09565b6001600160a01b03161480610a095750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fe9190611b09565b6001600160a01b0316145b610a555760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016106f9565b61070a6113ec565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae19190611b09565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045e9190611b68565b606061016580546103a490611acf565b60003381610b728286610ced565b905083811015610bd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106f9565b610bdf8286868403610edf565b506001949350505050565b60003361043581858561107e565b60608167ffffffffffffffff811115610c1357610c13611876565b604051908082528060200260200182016040528015610c4657816020015b6060815260200190600190039081610c315790505b50905060005b82811015610ce657610cb630858584818110610c6a57610c6a611b8a565b9050602002810190610c7c9190611ba0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142992505050565b828281518110610cc857610cc8611b8a565b60200260200101819052508080610cde90611bee565b915050610c4c565b5092915050565b6001600160a01b0391821660009081526101626020908152604080832093909416825291909152205490565b61012e805460ff191660011790556000610d303390565b9050610d3f61012d5482610a5d565b80610d6f5750610d6f7fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef982610a5d565b610dbb5760405162461bcd60e51b815260206004820152601e60248201527f5365697a61626c6553656375726974793a20554e415554484f52495a4544000060448201526064016106f9565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ff0d1a606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f9190611b09565b9050610e4c84828561151d565b806001600160a01b0316846001600160a01b0316610e673390565b6001600160a01b03167fa9aec5d8b86e2fa2fd6ac3af62f2622e3dfdab1967d4cbbb56a5df7d74cb887c86604051610ea191815260200190565b60405180910390a4505061012e805460ff191690555050565b60006001600160e01b0319821663b55bd4f760e01b148061038e575061038e82611528565b6001600160a01b038316610f415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106f9565b6001600160a01b038216610fa25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106f9565b6001600160a01b038381166000818152610162602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110108484610ced565b90506000198114611078578181101561106b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106f9565b6110788484848403610edf565b50505050565b6001600160a01b0383166110e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f9565b6001600160a01b0382166111445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f9565b6001600160a01b03831660009081526101616020526040902054818110156111bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106f9565b6001600160a01b03808516600090815261016160205260408082208585039055918516815290812080548492906111f5908490611b55565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161124191815260200190565b60405180910390a3611078565b61125661155d565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166112f65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106f9565b8061016360008282546113099190611b55565b90915550506001600160a01b0382166000908152610161602052604081208054839290611337908490611b55565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6113896115a8565b6113916115a8565b6113996115a8565b6113a16115a8565b6113a96115a8565b6113b16115cf565b6113b9611602565b565b600054610100900460ff166113e25760405162461bcd60e51b81526004016106f990611c07565b610717828261168b565b6113f46116cd565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112833390565b60606001600160a01b0383163b6114915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106f9565b600080846001600160a01b0316846040516114ac9190611c52565b600060405180830381855af49150503d80600081146114e7576040519150601f19603f3d011682016040523d82523d6000602084013e6114ec565b606091505b50915091506115148282604051806060016040528060278152602001611d7d60279139611715565b95945050505050565b61083383838361107e565b60006001600160e01b0319821663d86f1ca160e01b148061038e57506301ffc9a760e01b6001600160e01b031983161461038e565b611565610838565b6113b95760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016106f9565b600054610100900460ff166113b95760405162461bcd60e51b81526004016106f990611c07565b600054610100900460ff166115f65760405162461bcd60e51b81526004016106f990611c07565b6033805460ff19169055565b600054610100900460ff166116295760405162461bcd60e51b81526004016106f990611c07565b6040516bffffffffffffffffffffffff193060601b1660208201527fca36d5a0569842341b54d50138a85347289de5969cb525e882bbb1a2dedcfef9603482015260540160408051601f19818403018152919052805160209091012061012d55565b600054610100900460ff166116b25760405162461bcd60e51b81526004016106f990611c07565b6101646116bf8382611cbc565b506101656108338282611cbc565b6116d5610838565b156113b95760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016106f9565b6060831561172457508161045e565b8251156117345782518084602001fd5b8160405162461bcd60e51b81526004016106f991906117c8565b60006020828403121561176057600080fd5b81356001600160e01b03198116811461045e57600080fd5b60005b8381101561179357818101518382015260200161177b565b50506000910152565b600081518084526117b4816020860160208601611778565b601f01601f19169290920160200192915050565b60208152600061045e602083018461179c565b6001600160a01b038116811461070a57600080fd5b6000806040838503121561180357600080fd5b823561180e816117db565b946020939093013593505050565b60008060006060848603121561183157600080fd5b833561183c816117db565b9250602084013561184c816117db565b929592945050506040919091013590565b60006020828403121561186f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261189d57600080fd5b813567ffffffffffffffff808211156118b8576118b8611876565b604051601f8301601f19908116603f011681019082821181831017156118e0576118e0611876565b816040528381528660208588010111156118f957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561192c57600080fd5b823567ffffffffffffffff8082111561194457600080fd5b6119508683870161188c565b9350602085013591508082111561196657600080fd5b506119738582860161188c565b9150509250929050565b60006020828403121561198f57600080fd5b813561045e816117db565b600080604083850312156119ad57600080fd5b8235915060208301356119bf816117db565b809150509250929050565b600080602083850312156119dd57600080fd5b823567ffffffffffffffff808211156119f557600080fd5b818501915085601f830112611a0957600080fd5b813581811115611a1857600080fd5b8660208260051b8501011115611a2d57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611a9457603f19888603018452611a8285835161179c565b94509285019290850190600101611a66565b5092979650505050505050565b60008060408385031215611ab457600080fd5b8235611abf816117db565b915060208301356119bf816117db565b600181811c90821680611ae357607f821691505b602082108103611b0357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611b1b57600080fd5b815161045e816117db565b600060208284031215611b3857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561038e5761038e611b3f565b600060208284031215611b7a57600080fd5b8151801515811461045e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611bb757600080fd5b83018035915067ffffffffffffffff821115611bd257600080fd5b602001915036819003821315611be757600080fd5b9250929050565b600060018201611c0057611c00611b3f565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611c64818460208701611778565b9190910192915050565b601f82111561083357600081815260208120601f850160051c81016020861015611c955750805b601f850160051c820191505b81811015611cb457828155600101611ca1565b505050505050565b815167ffffffffffffffff811115611cd657611cd6611876565b611cea81611ce48454611acf565b84611c6e565b602080601f831160018114611d1f5760008415611d075750858301515b600019600386901b1c1916600185901b178555611cb4565b600085815260208120601f198616915b82811015611d4e57888601518255948401946001909101908401611d2f565b5085821015611d6c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
