UNPKG

@investorid/identity-sdk

Version:
616 lines 619 kB
{ "contractName": "ClaimHolder", "abi": [ { "constant": true, "inputs": [ { "name": "_key", "type": "bytes32" } ], "name": "getKeyPurpose", "outputs": [ { "name": "purpose", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_key", "type": "bytes32" } ], "name": "getKey", "outputs": [ { "name": "purpose", "type": "uint256" }, { "name": "keyType", "type": "uint256" }, { "name": "key", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_key", "type": "bytes32" }, { "name": "_purpose", "type": "uint256" }, { "name": "_type", "type": "uint256" } ], "name": "addKey", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_id", "type": "uint256" }, { "name": "_approve", "type": "bool" } ], "name": "approve", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_key", "type": "bytes32" } ], "name": "removeKey", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_purpose", "type": "uint256" } ], "name": "getKeysByPurpose", "outputs": [ { "name": "_keys", "type": "bytes32[]" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "_to", "type": "address" }, { "name": "_value", "type": "uint256" }, { "name": "_data", "type": "bytes" } ], "name": "execute", "outputs": [ { "name": "executionId", "type": "uint256" } ], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_key", "type": "bytes32" }, { "name": "_purpose", "type": "uint256" } ], "name": "keyHasPurpose", "outputs": [ { "name": "result", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "claimRequestId", "type": "uint256" }, { "indexed": true, "name": "claimType", "type": "uint256" }, { "indexed": false, "name": "scheme", "type": "uint256" }, { "indexed": true, "name": "issuer", "type": "address" }, { "indexed": false, "name": "signature", "type": "bytes" }, { "indexed": false, "name": "data", "type": "bytes" }, { "indexed": false, "name": "uri", "type": "string" } ], "name": "ClaimRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "claimId", "type": "bytes32" }, { "indexed": true, "name": "claimType", "type": "uint256" }, { "indexed": false, "name": "scheme", "type": "uint256" }, { "indexed": true, "name": "issuer", "type": "address" }, { "indexed": false, "name": "signature", "type": "bytes" }, { "indexed": false, "name": "data", "type": "bytes" }, { "indexed": false, "name": "uri", "type": "string" } ], "name": "ClaimAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "claimId", "type": "bytes32" }, { "indexed": true, "name": "claimType", "type": "uint256" }, { "indexed": false, "name": "scheme", "type": "uint256" }, { "indexed": true, "name": "issuer", "type": "address" }, { "indexed": false, "name": "signature", "type": "bytes" }, { "indexed": false, "name": "data", "type": "bytes" }, { "indexed": false, "name": "uri", "type": "string" } ], "name": "ClaimRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "claimId", "type": "bytes32" }, { "indexed": true, "name": "claimType", "type": "uint256" }, { "indexed": false, "name": "scheme", "type": "uint256" }, { "indexed": true, "name": "issuer", "type": "address" }, { "indexed": false, "name": "signature", "type": "bytes" }, { "indexed": false, "name": "data", "type": "bytes" }, { "indexed": false, "name": "uri", "type": "string" } ], "name": "ClaimChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "executionId", "type": "uint256" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": true, "name": "value", "type": "uint256" }, { "indexed": false, "name": "data", "type": "bytes" } ], "name": "ExecutionFailed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "key", "type": "bytes32" }, { "indexed": true, "name": "purpose", "type": "uint256" }, { "indexed": true, "name": "keyType", "type": "uint256" } ], "name": "KeyAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "key", "type": "bytes32" }, { "indexed": true, "name": "purpose", "type": "uint256" }, { "indexed": true, "name": "keyType", "type": "uint256" } ], "name": "KeyRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "executionId", "type": "uint256" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": true, "name": "value", "type": "uint256" }, { "indexed": false, "name": "data", "type": "bytes" } ], "name": "ExecutionRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "executionId", "type": "uint256" }, { "indexed": true, "name": "to", "type": "address" }, { "indexed": true, "name": "value", "type": "uint256" }, { "indexed": false, "name": "data", "type": "bytes" } ], "name": "Executed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "executionId", "type": "uint256" }, { "indexed": false, "name": "approved", "type": "bool" } ], "name": "Approved", "type": "event" }, { "constant": false, "inputs": [ { "name": "_claimType", "type": "uint256" }, { "name": "_scheme", "type": "uint256" }, { "name": "_issuer", "type": "address" }, { "name": "_signature", "type": "bytes" }, { "name": "_data", "type": "bytes" }, { "name": "_uri", "type": "string" } ], "name": "addClaim", "outputs": [ { "name": "claimRequestId", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_claimId", "type": "bytes32" } ], "name": "removeClaim", "outputs": [ { "name": "success", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_claimId", "type": "bytes32" } ], "name": "getClaim", "outputs": [ { "name": "claimType", "type": "uint256" }, { "name": "scheme", "type": "uint256" }, { "name": "issuer", "type": "address" }, { "name": "signature", "type": "bytes" }, { "name": "data", "type": "bytes" }, { "name": "uri", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "_claimType", "type": "uint256" } ], "name": "getClaimIdsByType", "outputs": [ { "name": "claimIds", "type": "bytes32[]" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x6080604052600033604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390209050806001600083600019166000191681526020019081526020016000206002018160001916905550600180600083600019166000191681526020019081526020016000206000018190555060018060008360001916600019168152602001908152602001600020600101819055506002600060018152602001908152602001600020819080600181540180825580915050906001820390600052602060002001600090919290919091509060001916905550600180600083600019166000191681526020019081526020016000206000015482600019167f480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e960405160405180910390a4506127518061016b6000396000f3006080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063032c1a8a146100bf57806312aaac70146101045780631d3812401461015f578063262b54f5146101bc5780634eee424a1461023e578063747442d314610287578063862642f5146102d85780639010f72614610321578063b1a34e0d146103a3578063b61d27f6146104e8578063c9100bcb14610582578063d202158d14610745575b600080fd5b3480156100cb57600080fd5b506100ee6004803603810190808035600019169060200190929190505050610798565b6040518082815260200191505060405180910390f35b34801561011057600080fd5b5061013360048036038101908080356000191690602001909291905050506107c0565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b34801561016b57600080fd5b506101a26004803603810190808035600019169060200190929190803590602001909291908035906020019092919050505061082f565b604051808215151515815260200191505060405180910390f35b3480156101c857600080fd5b506101e760048036038101908080359060200190929190505050610ae8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561022a57808201518184015260208101905061020f565b505050509050019250505060405180910390f35b34801561024a57600080fd5b5061026d6004803603810190808035600019169060200190929190505050610b57565b604051808215151515815260200191505060405180910390f35b34801561029357600080fd5b506102be600480360381019080803590602001909291908035151590602001909291905050506110c5565b604051808215151515815260200191505060405180910390f35b3480156102e457600080fd5b5061030760048036038101908080356000191690602001909291905050506115f0565b604051808215151515815260200191505060405180910390f35b34801561032d57600080fd5b5061034c60048036038101908080359060200190929190505050611976565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038f578082015181840152602081019050610374565b505050509050019250505060405180910390f35b3480156103af57600080fd5b506104ca6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119e5565b60405180826000191660001916815260200191505060405180910390f35b61056c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f0a565b6040518082815260200191505060405180910390f35b34801561058e57600080fd5b506105b160048036038101908080356000191690602001909291905050506121ec565b604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561063757808201518184015260208101905061061c565b50505050905090810190601f1680156106645780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b8381101561069d578082015181840152602081019050610682565b50505050905090810190601f1680156106ca5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156107035780820151818401526020810190506106e8565b50505050905090810190601f1680156107305780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561075157600080fd5b5061077e6004803603810190808035600019169060200190929190803590602001909291905050506124b6565b604051808215151515815260200191505060405180910390f35b6000600160008360001916600019168152602001908152602001600020600001549050919050565b60008060006001600085600019166000191681526020019081526020016000206000015460016000866000191660001916815260200190815260200160002060010154600160008760001916600019168152602001908152602001600020600201549250925092509193909250565b600083600019166001600086600019166000191681526020019081526020016000206002015460001916141515156108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4b657920616c726561647920657869737473000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109fa5761095f33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b15156109f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b8360016000866000191660001916815260200190815260200160002060020181600019169055508260016000866000191660001916815260200190815260200160002060000181905550816001600086600019166000191681526020019081526020016000206001018190555060026000848152602001908152602001600020849080600181540180825580915050906001820390600052602060002001600090919290919091509060001916905550818385600019167f480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e960405160405180910390a4600190509392505050565b606060056000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610b4b57602002820191906000526020600020905b81546000191681526020019060010190808311610b33575b50505050509050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c8757610bec33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b1515610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b60046000856000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166004600086600019166000191681526020019081526020016000206000015485600019167f3cf57863a89432c61c4a27073c6ee39e8a764bff5a05aebfbcdcdc80b2e6130a60046000896000191660001916815260200190815260200160002060010154600460008a60001916600019168152602001908152602001600020600301600460008b60001916600019168152602001908152602001600020600401600460008c6000191660001916815260200190815260200160002060050160405180858152602001806020018060200180602001848103845287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e315780601f10610e0657610100808354040283529160200191610e31565b820191906000526020600020905b815481529060010190602001808311610e1457829003601f168201915b5050848103835286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb45780601f10610e8957610100808354040283529160200191610eb4565b820191906000526020600020905b815481529060010190602001808311610e9757829003601f168201915b5050848103825285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f375780601f10610f0c57610100808354040283529160200191610f37565b820191906000526020600020905b815481529060010190602001808311610f1a57829003601f168201915b505097505050505050505060405180910390a4600560006004600087600019166000191681526020019081526020016000206000015481526020019081526020016000209150600090505b81805490508110156110355783600019168282815481101515610fa157fe5b9060005260206000200154600019161415611028578181815481101515610fc457fe5b9060005260206000200160009055816001838054905003815481101515610fe757fe5b9060005260206000200154828281548110151561100057fe5b90600052602060002001816000191690555081805480919060019003611026919061251f565b505b8080600101915050610f82565b60046000856000191660001916815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000611098919061254b565b6004820160006110a8919061254b565b6005820160006110b89190612593565b5050600192505050919050565b600061112233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060026124b6565b1515611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53656e64657220646f6573206e6f74206861766520616374696f6e206b65790081525060200191505060405180910390fd5b827fb3932da477fe5d6c8ff2eafef050c0f3a1af18fc07121001482600f36f3715d883604051808215151515815260200191505060405180910390a26001151582151514156115b65760016003600085815260200190815260200160002060030160006101000a81548160ff0219169083151502179055506003600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360008581526020019081526020016000206001015460036000868152602001908152602001600020600201600060405180838054600181600116156101000203166002900480156112ef5780601f106112c4576101008083540402835291602001916112ef565b820191906000526020600020905b8154815290600101906020018083116112d257829003601f168201915b50508260ff1681526020019250505060006040518083038185875af1925050509050801561147e5760016003600085815260200190815260200160002060030160016101000a81548160ff02191690831515021790555060036000848152602001908152602001600020600101546003600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b860036000888152602001908152602001600020600201604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561146b5780601f106114405761010080835404028352916020019161146b565b820191906000526020600020905b81548152906001019060200180831161144e57829003601f168201915b50509250505060405180910390a46115ea565b60036000848152602001908152602001600020600101546003600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fe10c49d9f7c71da23262367013434763cfdb2332267641728d25cd712c5c6a686003600088815260200190815260200160002060020160405180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115a35780601f10611578576101008083540402835291602001916115a3565b820191906000526020600020905b81548152906001019060200180831161158657829003601f168201915b50509250505060405180910390a46115ea565b60006003600085815260200190815260200160002060030160006101000a81548160ff021916908315150217905550600190505b92915050565b600080600083600019166001600086600019166000191681526020019081526020016000206002015460001916141515611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f2073756368206b657900000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117bd5761172233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b15156117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b600160008560001916600019168152602001908152602001600020600101546001600086600019166000191681526020019081526020016000206000015460016000876000191660001916815260200190815260200160002060020154600019167f585a4aef50f8267a92b32412b331b20f7f8b96f2245b253b9cc50dcc621d339760405160405180910390a4600260006001600087600019166000191681526020019081526020016000206000015481526020019081526020016000209150600090505b818054905081101561193557836000191682828154811015156118a157fe5b90600052602060002001546000191614156119285781818154811015156118c457fe5b90600052602060002001600090558160018380549050038154811015156118e757fe5b9060005260206000200154828281548110151561190057fe5b90600052602060002001816000191690555081805480919060019003611926919061251f565b505b8080600101915050611882565b600160008560001916600019168152602001908152602001600020600080820160009055600182016000905560028201600090555050600192505050919050565b6060600260008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156119d957602002820191906000526020600020905b815460001916815260200190600101908083116119c1575b50505050509050919050565b6000808588604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051809103902090503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b6e57611ad333604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060036124b6565b1515611b6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f53656e64657220646f6573206e6f74206861766520636c61696d207369676e6581526020017f72206b657900000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b8573ffffffffffffffffffffffffffffffffffffffff1660046000836000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c2557600560008981526020019081526020016000208190806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055505b876004600083600019166000191681526020019081526020016000206000018190555086600460008360001916600019168152602001908152602001600020600101819055508560046000836000191660001916815260200190815260200160002060020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004600083600019166000191681526020019081526020016000206003019080519060200190611cfa9291906125db565b50836004600083600019166000191681526020019081526020016000206004019080519060200190611d2d9291906125db565b50826004600083600019166000191681526020019081526020016000206005019080519060200190611d6092919061265b565b508573ffffffffffffffffffffffffffffffffffffffff168882600019167f46149b18aa084502c3f12bc75e19eda8bda8d102b82cce8474677a6d0d5f43c58a89898960405180858152602001806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015611df1578082015181840152602081019050611dd6565b50505050905090810190601f168015611e1e5780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b83811015611e57578082015181840152602081019050611e3c565b50505050905090810190601f168015611e845780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015611ebd578082015181840152602081019050611ea2565b50505050905090810190601f168015611eea5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4809150509695505050505050565b6000600360008054815260200190815260200160002060030160019054906101000a900460ff16151515611fa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f416c72656164792065786563757465640000000000000000000000000000000081525060200191505060405180910390fd5b83600360008054815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260036000805481526020019081526020016000206001018190555081600360008054815260200190815260200160002060020190805190602001906120439291906125db565b50828473ffffffffffffffffffffffffffffffffffffffff166000547f8afcfabcb00e47a53a8fc3e9f23ff47ee1926194bb1350dd007c50b412a6cee8856040518080602001828103825283818151815260200191508051906020019080838360005b838110156120c15780820151818401526020810190506120a6565b50505050905090810190601f1680156120ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390a461215633604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b806121b857506121b733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060026124b6565b5b156121cc576121ca60005460016110c5565b505b600080815480929190600101919050555060016000540390509392505050565b600080600060608060606004600088600019166000191681526020019081526020016000206000015460046000896000191660001916815260200190815260200160002060010154600460008a6000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008b60001916600019168152602001908152602001600020600301600460008c60001916600019168152602001908152602001600020600401600460008d60001916600019168152602001908152602001600020600501828054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123625780601f1061233757610100808354040283529160200191612362565b820191906000526020600020905b81548152906001019060200180831161234557829003601f168201915b50505050509250818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123fe5780601f106123d3576101008083540402835291602001916123fe565b820191906000526020600020905b8154815290600101906020018083116123e157829003601f168201915b50505050509150808054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561249a5780601f1061246f5761010080835404028352916020019161249a565b820191906000526020600020905b81548152906001019060200180831161247d57829003601f168201915b5050505050905095509550955095509550955091939550919395565b6000806000600102600160008660001916600019168152602001908152602001600020600201546000191614156124f05760009150612518565b8260016000866000191660001916815260200190815260200160002060000154111590508091505b5092915050565b8154818355818111156125465781836000526020600020918201910161254591906126db565b5b505050565b50805460018160011615610100020316600290046000825580601f106125715750612590565b601f01602090049060005260206000209081019061258f9190612700565b5b50565b50805460018160011615610100020316600290046000825580601f106125b957506125d8565b601f0160209004906000526020600020908101906125d79190612700565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061261c57805160ff191683800117855561264a565b8280016001018555821561264a579182015b8281111561264957825182559160200191906001019061262e565b5b5090506126579190612700565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061269c57805160ff19168380011785556126ca565b828001600101855582156126ca579182015b828111156126c95782518255916020019190600101906126ae565b5b5090506126d79190612700565b5090565b6126fd91905b808211156126f95760008160009055506001016126e1565b5090565b90565b61272291905b8082111561271e576000816000905550600101612706565b5090565b905600a165627a7a7230582077729834ad271e0889f52d6152398bef19a247bf1cf61461c83ab002c9d83b850029", "deployedBytecode": "0x6080604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063032c1a8a146100bf57806312aaac70146101045780631d3812401461015f578063262b54f5146101bc5780634eee424a1461023e578063747442d314610287578063862642f5146102d85780639010f72614610321578063b1a34e0d146103a3578063b61d27f6146104e8578063c9100bcb14610582578063d202158d14610745575b600080fd5b3480156100cb57600080fd5b506100ee6004803603810190808035600019169060200190929190505050610798565b6040518082815260200191505060405180910390f35b34801561011057600080fd5b5061013360048036038101908080356000191690602001909291905050506107c0565b604051808481526020018381526020018260001916600019168152602001935050505060405180910390f35b34801561016b57600080fd5b506101a26004803603810190808035600019169060200190929190803590602001909291908035906020019092919050505061082f565b604051808215151515815260200191505060405180910390f35b3480156101c857600080fd5b506101e760048036038101908080359060200190929190505050610ae8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561022a57808201518184015260208101905061020f565b505050509050019250505060405180910390f35b34801561024a57600080fd5b5061026d6004803603810190808035600019169060200190929190505050610b57565b604051808215151515815260200191505060405180910390f35b34801561029357600080fd5b506102be600480360381019080803590602001909291908035151590602001909291905050506110c5565b604051808215151515815260200191505060405180910390f35b3480156102e457600080fd5b5061030760048036038101908080356000191690602001909291905050506115f0565b604051808215151515815260200191505060405180910390f35b34801561032d57600080fd5b5061034c60048036038101908080359060200190929190505050611976565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038f578082015181840152602081019050610374565b505050509050019250505060405180910390f35b3480156103af57600080fd5b506104ca6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119e5565b60405180826000191660001916815260200191505060405180910390f35b61056c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611f0a565b6040518082815260200191505060405180910390f35b34801561058e57600080fd5b506105b160048036038101908080356000191690602001909291905050506121ec565b604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561063757808201518184015260208101905061061c565b50505050905090810190601f1680156106645780820380516001836020036101000a031916815260200191505b50848103835286818151815260200191508051906020019080838360005b8381101561069d578082015181840152602081019050610682565b50505050905090810190601f1680156106ca5780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b838110156107035780820151818401526020810190506106e8565b50505050905090810190601f1680156107305780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561075157600080fd5b5061077e6004803603810190808035600019169060200190929190803590602001909291905050506124b6565b604051808215151515815260200191505060405180910390f35b6000600160008360001916600019168152602001908152602001600020600001549050919050565b60008060006001600085600019166000191681526020019081526020016000206000015460016000866000191660001916815260200190815260200160002060010154600160008760001916600019168152602001908152602001600020600201549250925092509193909250565b600083600019166001600086600019166000191681526020019081526020016000206002015460001916141515156108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4b657920616c726561647920657869737473000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109fa5761095f33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b15156109f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b8360016000866000191660001916815260200190815260200160002060020181600019169055508260016000866000191660001916815260200190815260200160002060000181905550816001600086600019166000191681526020019081526020016000206001018190555060026000848152602001908152602001600020849080600181540180825580915050906001820390600052602060002001600090919290919091509060001916905550818385600019167f480000bb1edad8ca1470381cc334b1917fbd51c6531f3a623ea8e0ec7e38a6e960405160405180910390a4600190509392505050565b606060056000838152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610b4b57602002820191906000526020600020905b81546000191681526020019060010190808311610b33575b50505050509050919050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c8757610bec33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b1515610c86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b60046000856000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166004600086600019166000191681526020019081526020016000206000015485600019167f3cf57863a89432c61c4a27073c6ee39e8a764bff5a05aebfbcdcdc80b2e6130a60046000896000191660001916815260200190815260200160002060010154600460008a60001916600019168152602001908152602001600020600301600460008b60001916600019168152602001908152602001600020600401600460008c6000191660001916815260200190815260200160002060050160405180858152602001806020018060200180602001848103845287818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610e315780601f10610e0657610100808354040283529160200191610e31565b820191906000526020600020905b815481529060010190602001808311610e1457829003601f168201915b5050848103835286818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610eb45780601f10610e8957610100808354040283529160200191610eb4565b820191906000526020600020905b815481529060010190602001808311610e9757829003601f168201915b5050848103825285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610f375780601f10610f0c57610100808354040283529160200191610f37565b820191906000526020600020905b815481529060010190602001808311610f1a57829003601f168201915b505097505050505050505060405180910390a4600560006004600087600019166000191681526020019081526020016000206000015481526020019081526020016000209150600090505b81805490508110156110355783600019168282815481101515610fa157fe5b9060005260206000200154600019161415611028578181815481101515610fc457fe5b9060005260206000200160009055816001838054905003815481101515610fe757fe5b9060005260206000200154828281548110151561100057fe5b90600052602060002001816000191690555081805480919060019003611026919061251f565b505b8080600101915050610f82565b60046000856000191660001916815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382016000611098919061254b565b6004820160006110a8919061254b565b6005820160006110b89190612593565b5050600192505050919050565b600061112233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060026124b6565b1515611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53656e64657220646f6573206e6f74206861766520616374696f6e206b65790081525060200191505060405180910390fd5b827fb3932da477fe5d6c8ff2eafef050c0f3a1af18fc07121001482600f36f3715d883604051808215151515815260200191505060405180910390a26001151582151514156115b65760016003600085815260200190815260200160002060030160006101000a81548160ff0219169083151502179055506003600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360008581526020019081526020016000206001015460036000868152602001908152602001600020600201600060405180838054600181600116156101000203166002900480156112ef5780601f106112c4576101008083540402835291602001916112ef565b820191906000526020600020905b8154815290600101906020018083116112d257829003601f168201915b50508260ff1681526020019250505060006040518083038185875af1925050509050801561147e5760016003600085815260200190815260200160002060030160016101000a81548160ff02191690831515021790555060036000848152602001908152602001600020600101546003600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847f1f920dbda597d7bf95035464170fa58d0a4b57f13a1c315ace6793b9f63688b860036000888152602001908152602001600020600201604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561146b5780601f106114405761010080835404028352916020019161146b565b820191906000526020600020905b81548152906001019060200180831161144e57829003601f168201915b50509250505060405180910390a46115ea565b60036000848152602001908152602001600020600101546003600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16847fe10c49d9f7c71da23262367013434763cfdb2332267641728d25cd712c5c6a686003600088815260200190815260200160002060020160405180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115a35780601f10611578576101008083540402835291602001916115a3565b820191906000526020600020905b81548152906001019060200180831161158657829003601f168201915b50509250505060405180910390a46115ea565b60006003600085815260200190815260200160002060030160006101000a81548160ff021916908315150217905550600190505b92915050565b600080600083600019166001600086600019166000191681526020019081526020016000206002015460001916141515611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f2073756368206b657900000000000000000000000000000000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117bd5761172233604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051809103902060016124b6565b15156117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f53656e64657220646f6573206e6f742068617665206d616e6167656d656e742081526020017f6b6579000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b600160008560001916600019168152602001908152602001600020600101546001600086600019166000191681526020019081526020016000206000015460016000876000191660001916815260200190815260200160002060020154600019167f585a4aef50