{
  "contractName": "Exchange",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "fills",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "makerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "makerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "makerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "takerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "expiration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "Filled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "makerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "makerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "makerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "takerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "expiration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "Canceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "code",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "makerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "makerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "makerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "takerAmount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "name": "takerToken",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "expiration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "Failed",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "makerAddress",
          "type": "address"
        },
        {
          "name": "makerAmount",
          "type": "uint256"
        },
        {
          "name": "makerToken",
          "type": "address"
        },
        {
          "name": "takerAddress",
          "type": "address"
        },
        {
          "name": "takerAmount",
          "type": "uint256"
        },
        {
          "name": "takerToken",
          "type": "address"
        },
        {
          "name": "expiration",
          "type": "uint256"
        },
        {
          "name": "nonce",
          "type": "uint256"
        },
        {
          "name": "v",
          "type": "uint8"
        },
        {
          "name": "r",
          "type": "bytes32"
        },
        {
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "fill",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "makerAddress",
          "type": "address"
        },
        {
          "name": "makerAmount",
          "type": "uint256"
        },
        {
          "name": "makerToken",
          "type": "address"
        },
        {
          "name": "takerAddress",
          "type": "address"
        },
        {
          "name": "takerAmount",
          "type": "uint256"
        },
        {
          "name": "takerToken",
          "type": "address"
        },
        {
          "name": "expiration",
          "type": "uint256"
        },
        {
          "name": "nonce",
          "type": "uint256"
        },
        {
          "name": "v",
          "type": "uint8"
        },
        {
          "name": "r",
          "type": "bytes32"
        },
        {
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611324806100206000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d1461005c57806320158c441461014357806366a264191461018c575b600080fd5b610141600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610280565b005b34801561014f57600080fd5b506101726004803603810190808035600019169060200190929190505050610c60565b604051808215151515815260200191505060405180910390f35b34801561019857600080fd5b5061027e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610c80565b005b60008873ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156103d3573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156102fc573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60018f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b428610156104f8573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610421573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60028f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b61050b8c8c8c8c8c8c8c8c8c8c8c610ee0565b9050600080826000191660001916815260200190815260200160002060009054906101000a900460ff1615610657573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610580573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60038f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561090d57873414156107ef576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506106d38c8a8d8d61119f565b15156106db57fe5b8b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610721573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610908565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610835573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60048f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b610c51565b600034141515610a34573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561095d573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60058f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b3373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415610b7e576001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610aa98c8c8c8c8c8c6112ca565b1515610ab157fe5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610c50565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60068f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b5b505050505050505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000610c958c8c8c8c8c8c8c8c8c8c8c610ee0565b90508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610ed25760001515600080836000191660001916815260200190815260200160002060009054906101000a900460ff1615151415610dff576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8ce0bae8f3488649f2f29762dfc77af336a695060bc787b9c813c6fdd79fdf258e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610ed1565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60078f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b505050505050505050505050565b600080606060008e8e8e8e8e8e8e8e604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200198505050505050505050604051809103902092506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081836040518083805190602001908083835b602083101515611092578051825260208201915060208101905060208303925061106d565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508e73ffffffffffffffffffffffffffffffffffffffff16600182898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561115e573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614151561118a57600080fd5b8293505050509b9a5050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561127857600080fd5b505af115801561128c573d6000803e3d6000fd5b505050506040513d60208110156112a257600080fd5b810190808051906020019092919050505015156112be57600080fd5b60019050949350505050565b60006112d88785888861119f565b80156112ec57506112eb8488858561119f565b5b905096955050505050505600a165627a7a72305820d6bddc38c3b43402fbf7525c75955e2ec86afc9aa34c901b685fc43cb74e565e0029",
  "deployedBytecode": "0x608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d1461005c57806320158c441461014357806366a264191461018c575b600080fd5b610141600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610280565b005b34801561014f57600080fd5b506101726004803603810190808035600019169060200190929190505050610c60565b604051808215151515815260200191505060405180910390f35b34801561019857600080fd5b5061027e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610c80565b005b60008873ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156103d3573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156102fc573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60018f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b428610156104f8573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610421573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60028f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b61050b8c8c8c8c8c8c8c8c8c8c8c610ee0565b9050600080826000191660001916815260200190815260200160002060009054906101000a900460ff1615610657573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610580573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60038f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561090d57873414156107ef576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506106d38c8a8d8d61119f565b15156106db57fe5b8b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610721573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610908565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610835573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60048f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b610c51565b600034141515610a34573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561095d573d6000803e3d6000fd5b508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60058f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610c52565b3373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415610b7e576001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610aa98c8c8c8c8c8c6112ca565b1515610ab157fe5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610c50565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60068f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b5b505050505050505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000610c958c8c8c8c8c8c8c8c8c8c8c610ee0565b90508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610ed25760001515600080836000191660001916815260200190815260200160002060009054906101000a900460ff1615151415610dff576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8ce0bae8f3488649f2f29762dfc77af336a695060bc787b9c813c6fdd79fdf258e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610ed1565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60078f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b505050505050505050505050565b600080606060008e8e8e8e8e8e8e8e604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200198505050505050505050604051809103902092506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081836040518083805190602001908083835b602083101515611092578051825260208201915060208101905060208303925061106d565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508e73ffffffffffffffffffffffffffffffffffffffff16600182898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561115e573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614151561118a57600080fd5b8293505050509b9a5050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561127857600080fd5b505af115801561128c573d6000803e3d6000fd5b505050506040513d60208110156112a257600080fd5b810190808051906020019092919050505015156112be57600080fd5b60019050949350505050565b60006112d88785888861119f565b80156112ec57506112eb8488858561119f565b5b905096955050505050505600a165627a7a72305820d6bddc38c3b43402fbf7525c75955e2ec86afc9aa34c901b685fc43cb74e565e0029",
  "sourceMap": "218:8604:32:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;218:8604:32;;;;;;;",
  "deployedSourceMap": "218:8604:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:3900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;305:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;305:38:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5845:1209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5845:1209:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1646:3900;2540:12;1921;1905:28;;:12;:28;;;1901:265;;;1949:10;:19;;:30;1969:9;1949:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1949:30:32;2093:10;1993:142;;2042:10;1993:142;;2015:12;1993:142;;;2000:1;2029:11;2066:12;2080:11;2117:10;2129:5;1993:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2149:7;;1901:265;2236:3;2223:10;:16;2219:265;;;2255:10;:19;;:30;2275:9;2255:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2255:30:32;2407:10;2299:154;;2352:10;2299:154;;2325:12;2299:154;;;2306:1;2339:11;2380:12;2394:11;2435:10;2447:5;2299:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2467:7;;2219:265;2555:138;2564:12;2578:11;2591:10;2615:12;2629:11;2642:10;2666;2678:5;2685:1;2688;2691;2555:8;:138::i;:::-;2540:153;;2763:5;:11;2769:4;2763:11;;;;;;;;;;;;;;;;;;;;;;;;;;;2759:260;;;2790:10;:19;;:30;2810:9;2790:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2790:30:32;2942:10;2834:154;;2887:10;2834:154;;2860:12;2834:154;;;2841:1;2874:11;2915:12;2929:11;2970:10;2982:5;2834:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:7;;2759:260;3107:3;3085:26;;:10;:26;;;3081:2459;;;3218:11;3205:9;:24;3201:973;;;3327:4;3313:5;:11;3319:4;3313:11;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;3498:61;3507:12;3521;3535:11;3548:10;3498:8;:61::i;:::-;3491:69;;;;;;3655:12;:21;;:32;3677:9;3655:32;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3655:32:32;3855:10;3762:143;;3796:10;3762:143;;3769:12;3762:143;;;3783:11;3828:12;3842:11;3887:10;3899:5;3762:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:973;;;3945:10;:19;;:30;3965:9;3945:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3945:30:32;4109:10;3993:166;;4050:10;3993:166;;4023:12;3993:166;;;4000:1;4037:11;4082:12;4096:11;4141:10;4153:5;3993:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:973;3081:2459;;;4335:1;4322:9;:14;;4318:291;;;4356:10;:19;;:30;4376:9;4356:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4356:30:32;4520:10;4404:166;;4461:10;4404:166;;4434:12;4404:166;;;4411:1;4448:11;4493:12;4507:11;4552:10;4564:5;4404:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4588:7;;4318:291;4643:10;4627:26;;:12;:26;;;4623:907;;;4751:4;4737:5;:11;4743:4;4737:11;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;4966:103;4972:12;4986:11;4999:10;5031:12;5045:11;5058:10;4966:5;:103::i;:::-;4959:111;;;;;;5259:10;5145:164;;5200:10;5145:164;;5173:12;5145:164;;;5187:11;5232:12;5246:11;5291:10;5303:5;5145:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4623:907;;;5465:10;5349:166;;5406:10;5349:166;;5379:12;5349:166;;;5356:1;5393:11;5438:12;5452:11;5497:10;5509:5;5349:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4623:907;3081:2459;1646:3900;;;;;;;;;;;;;:::o;305:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;5845:1209::-;6144:12;6159:138;6168:12;6182:11;6195:10;6219:12;6233:11;6246:10;6270;6282:5;6289:1;6292;6295;6159:8;:138::i;:::-;6144:153;;6372:12;6358:26;;:10;:26;;;6354:694;;;6490:5;6475:20;;:5;:11;6481:4;6475:11;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;6471:567;;;6592:4;6578:5;:11;6584:4;6578:11;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;6767:10;6672:145;;6708:10;6672:145;;6681:12;6672:145;;;6695:11;6740:12;6754:11;6799:10;6811:5;6672:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:567;;;6973:10;6857:166;;6914:10;6857:166;;6887:12;6857:166;;;6864:1;6901:11;6946:12;6960:11;7005:10;7017:5;6857:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6471:567;6354:694;5845:1209;;;;;;;;;;;;:::o;8123:697::-;8388:7;8457:13;8614:19;8680:20;8483:12;8497:11;8510:10;8534:12;8548:11;8561:10;8585;8597:5;8473:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8457:146;;8614:56;;;;;;;;;;;;;;;;;;;;8708:6;8716:5;8703:19;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8703:19:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;8680:42;;8777:12;8741:48;;:32;8751:12;8765:1;8768;8771;8741:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8741:32:32;;;;;;;;:48;;;8733:57;;;;;;;;8808:5;8801:12;;8123:697;;;;;;;;;;;;;;;;:::o;7860:185::-;7949:4;7979:5;7973:25;;;7999:4;8005:2;8009:6;7973:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7973:43:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7973:43:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:43:32;;;;;;;;;;;;;;;;7965:52;;;;;;;;8034:4;8027:11;;7860:185;;;;;;:::o;7195:337::-;7366:4;7390:61;7399:12;7413;7427:11;7440:10;7390:8;:61::i;:::-;:134;;;;;7463:61;7472:12;7486;7500:11;7513:10;7463:8;:61::i;:::-;7390:134;7382:143;;7195:337;;;;;;;;:::o",
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-07-30T18:32:50.956Z"
}