diff --git a/packages/app/src/contracts/AMBModule.json b/packages/app/src/contracts/AMBModule.json deleted file mode 100644 index 34bf6de7..00000000 --- a/packages/app/src/contracts/AMBModule.json +++ /dev/null @@ -1,391 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AMBModule", - "sourceName": "contracts/AMBModule.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "contract IAMB", - "name": "_amb", - "type": "address" - }, - { - "internalType": "address", - "name": "_controller", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_chainId", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "AmbModuleSetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "amb", - "outputs": [ - { - "internalType": "contract IAMB", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "chainId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "controller", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "executeTransaction", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_amb", - "type": "address" - } - ], - "name": "setAmb", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_chainId", - "type": "bytes32" - } - ], - "name": "setChainId", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_controller", - "type": "address" - } - ], - "name": "setController", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200358838038062003588833981810160405281019062000037919062000926565b6000868686868686604051602001620000569695949392919062000ba2565b604051602081830303815290604052905062000078816200008560201b60201c565b5050505050505062000dc0565b60008060008060008086806020019051810190620000a4919062000890565b955095509550955095509550620000c06200034960201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141562000133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012a9062000c97565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620001a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019d9062000c31565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a81905550620002c2866200044860201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f523e377a4bf6c92e5fc7d99462b1d7f983014116ff0c646eba7267d11aba842c8760405162000338919062000b85565b60405180910390a450505050505050565b600060019054906101000a900460ff168062000370575060008054906101000a900460ff16155b620003b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a99062000c53565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000403576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620004136200055e60201b60201c565b620004236200063d60201b60201c565b8015620004455760008060016101000a81548160ff0219169083151502179055505b50565b620004586200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200047e6200074460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004ce9062000c75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005419062000c0f565b60405180910390fd5b6200055b816200076e60201b60201c565b50565b600060019054906101000a900460ff168062000585575060008054906101000a900460ff16155b620005c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005be9062000c53565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000618576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200063a5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000664575060008054906101000a900460ff16155b620006a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069d9062000c53565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006f7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620007176200070b6200073c60201b60201c565b6200076e60201b60201c565b8015620007395760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620008458162000d58565b92915050565b6000815190506200085c8162000d72565b92915050565b600081519050620008738162000d8c565b92915050565b6000815190506200088a8162000da6565b92915050565b60008060008060008060c08789031215620008aa57600080fd5b6000620008ba89828a016200084b565b9650506020620008cd89828a016200084b565b9550506040620008e089828a016200084b565b9450506060620008f389828a0162000879565b93505060806200090689828a016200084b565b92505060a06200091989828a0162000862565b9150509295509295509295565b60008060008060008060c087890312156200094057600080fd5b60006200095089828a0162000834565b96505060206200096389828a0162000834565b95505060406200097689828a0162000834565b94505060606200098989828a0162000879565b93505060806200099c89828a0162000834565b92505060a0620009af89828a0162000862565b9150509295509295509295565b620009c78162000cca565b82525050565b620009d88162000cf2565b82525050565b620009e98162000d30565b82525050565b6000620009fe60268362000cb9565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000a66601e8362000cb9565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000aa8602e8362000cb9565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000b1060208362000cb9565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000b52601e8362000cb9565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600060208201905062000b9c6000830184620009bc565b92915050565b600060c08201905062000bb96000830189620009bc565b62000bc86020830188620009bc565b62000bd76040830187620009bc565b62000be66060830186620009de565b62000bf56080830185620009bc565b62000c0460a0830184620009cd565b979650505050505050565b6000602082019050818103600083015262000c2a81620009ef565b9050919050565b6000602082019050818103600083015262000c4c8162000a57565b9050919050565b6000602082019050818103600083015262000c6e8162000a99565b9050919050565b6000602082019050818103600083015262000c908162000b01565b9050919050565b6000602082019050818103600083015262000cb28162000b43565b9050919050565b600082825260208201905092915050565b600062000cd78262000d10565b9050919050565b600062000ceb8262000d10565b9050919050565b6000819050919050565b600062000d098262000cca565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d3d8262000d44565b9050919050565b600062000d518262000d10565b9050919050565b62000d638162000cca565b811462000d6f57600080fd5b50565b62000d7d8162000cde565b811462000d8957600080fd5b50565b62000d978162000cf2565b811462000da357600080fd5b50565b62000db18162000cfc565b811462000dbd57600080fd5b50565b6127b88062000dd06000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806392eefe9b116100a2578063d4b8399211610071578063d4b8399214610281578063e19a9dd91461029f578063e69aa771146102bb578063f2fde38b146102d7578063f77c4791146102f357610116565b806392eefe9b1461020d5780639a8a059214610229578063a4f9edbf14610247578063c91063891461026357610116565b80635aef7de6116100e95780635aef7de61461018d578063715018a6146101ab578063776d1a01146101b55780637ceab3b1146101d15780638da5cb5b146101ef57610116565b8063086cfca81461011b5780631062b39a146101375780634164139f1461015557806356f0cb0114610171575b600080fd5b61013560048036038101906101309190611b00565b610311565b005b61013f610453565b60405161014c91906122dd565b60405180910390f35b61016f600480360381019061016a9190611bdb565b610479565b005b61018b60048036038101906101869190611b00565b61076c565b005b6101956108bd565b6040516101a2919061215e565b60405180910390f35b6101b36108e3565b005b6101cf60048036038101906101ca9190611b00565b61096b565b005b6101d9610aad565b6040516101e6919061215e565b60405180910390f35b6101f7610ad3565b604051610204919061215e565b60405180910390f35b61022760048036038101906102229190611b00565b610afd565b005b610231610c4e565b60405161023e919061227e565b60405180910390f35b610261600480360381019061025c9190611cd1565b610c54565b005b61026b610efe565b604051610278919061215e565b60405180910390f35b610289610f28565b604051610296919061215e565b60405180910390f35b6102b960048036038101906102b49190611b00565b610f4e565b005b6102d560048036038101906102d09190611c7f565b611184565b005b6102f160048036038101906102ec9190611b00565b61124f565b005b6102fb611347565b604051610308919061215e565b60405180910390f35b61031961136d565b73ffffffffffffffffffffffffffffffffffffffff16610337610ad3565b73ffffffffffffffffffffffffffffffffffffffff161461038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038490612398565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090612478565b60405180910390fd5b606a54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e307dff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac9190611ca8565b146105ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e3906122f8565b60405180910390fd5b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b15801561068d57600080fd5b505afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190611b29565b73ffffffffffffffffffffffffffffffffffffffff161461071b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071290612338565b60405180910390fd5b61072784848484611375565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612458565b60405180910390fd5b50505050565b61077461136d565b73ffffffffffffffffffffffffffffffffffffffff16610792610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612398565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610870906123f8565b60405180910390fd5b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108eb61136d565b73ffffffffffffffffffffffffffffffffffffffff16610909610ad3565b73ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095690612398565b60405180910390fd5b610969600061166a565b565b61097361136d565b73ffffffffffffffffffffffffffffffffffffffff16610991610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de90612398565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0561136d565b73ffffffffffffffffffffffffffffffffffffffff16610b23610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612398565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906123b8565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a5481565b60008060008060008086806020019051810190610c719190611b52565b955095509550955095509550610c85611730565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec906123d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612358565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a81905550610e798661124f565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f523e377a4bf6c92e5fc7d99462b1d7f983014116ff0c646eba7267d11aba842c87604051610eed919061215e565b60405180910390a450505050505050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f5661136d565b73ffffffffffffffffffffffffffffffffffffffff16610f74610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190612398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110e7578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161105791906122c2565b60206040518083038186803b15801561106f57600080fd5b505afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a79190611c56565b6110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90612418565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611179919061215e565b60405180910390a150565b61118c61136d565b73ffffffffffffffffffffffffffffffffffffffff166111aa610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612398565b60405180910390fd5b80606a541415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612438565b60405180910390fd5b80606a8190555050565b61125761136d565b73ffffffffffffffffffffffffffffffffffffffff16611275610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290612398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612318565b60405180910390fd5b6113448161166a565b50565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a757606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016114749b9a999897969594939291906121c5565b600060405180830381600087803b15801561148e57600080fd5b505af11580156114a2573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016115089493929190612179565b602060405180830381600087803b15801561152257600080fd5b505af1158015611536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155a9190611c56565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166257606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161162f929190612299565b600060405180830381600087803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b505050505b949350505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680611756575060008054906101000a900460ff16155b611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117e5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ed611819565b6117f56118f2565b80156118165760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061183f575060008054906101000a900460ff16155b61187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156118ce576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156118ef5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611918575060008054906101000a900460ff16155b611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156119a7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6119b76119b261136d565b61166a565b80156119d85760008060016101000a81548160ff0219169083151502179055505b50565b60006119ee6119e9846124c9565b612498565b905082815260208101848484011115611a0657600080fd5b611a11848285612623565b509392505050565b600081359050611a28816126e8565b92915050565b600081519050611a3d816126e8565b92915050565b600081519050611a52816126ff565b92915050565b600081519050611a6781612716565b92915050565b600081359050611a7c8161272d565b92915050565b600081519050611a918161272d565b92915050565b600082601f830112611aa857600080fd5b8135611ab88482602086016119db565b91505092915050565b600081519050611ad081612744565b92915050565b600081359050611ae58161275b565b92915050565b600081359050611afa8161276b565b92915050565b600060208284031215611b1257600080fd5b6000611b2084828501611a19565b91505092915050565b600060208284031215611b3b57600080fd5b6000611b4984828501611a2e565b91505092915050565b60008060008060008060c08789031215611b6b57600080fd5b6000611b7989828a01611a43565b9650506020611b8a89828a01611a43565b9550506040611b9b89828a01611a43565b9450506060611bac89828a01611ac1565b9350506080611bbd89828a01611a43565b92505060a0611bce89828a01611a82565b9150509295509295509295565b60008060008060808587031215611bf157600080fd5b6000611bff87828801611a19565b9450506020611c1087828801611aeb565b935050604085013567ffffffffffffffff811115611c2d57600080fd5b611c3987828801611a97565b9250506060611c4a87828801611ad6565b91505092959194509250565b600060208284031215611c6857600080fd5b6000611c7684828501611a58565b91505092915050565b600060208284031215611c9157600080fd5b6000611c9f84828501611a6d565b91505092915050565b600060208284031215611cba57600080fd5b6000611cc884828501611a82565b91505092915050565b600060208284031215611ce357600080fd5b600082013567ffffffffffffffff811115611cfd57600080fd5b611d0984828501611a97565b91505092915050565b611d1b81612538565b82525050565b611d2a81612526565b82525050565b611d398161254a565b82525050565b611d4881612556565b82525050565b611d5781612560565b82525050565b6000611d68826124f9565b611d728185612504565b9350611d82818560208601612632565b611d8b816126c3565b840191505092915050565b611d9f816125db565b82525050565b611dae816125ff565b82525050565b611dbd81612611565b82525050565b6000611dd0601483612515565b91507f556e617574686f72697a656420636861696e49640000000000000000000000006000830152602082019050919050565b6000611e10602683612515565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e76601783612515565b91507f556e617574686f72697a656420636f6e74726f6c6c65720000000000000000006000830152602082019050919050565b6000611eb6601e83612515565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000611ef6602e83612515565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000611f5c602083612515565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611f9c601e83612515565b91507f636f6e74726f6c6c657220616c72656164792073657420746f207468697300006000830152602082019050919050565b6000611fdc601e83612515565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600061201c601f83612515565b91507f414d42206164647265737320616c72656164792073657420746f2074686973006000830152602082019050919050565b600061205c602083612515565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b600061209c601b83612515565b91507f636861696e496420616c72656164792073657420746f207468697300000000006000830152602082019050919050565b60006120dc601983612515565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b600061211c601083612515565b91507f556e617574686f72697a656420616d62000000000000000000000000000000006000830152602082019050919050565b612158816125d1565b82525050565b60006020820190506121736000830184611d21565b92915050565b600060808201905061218e6000830187611d21565b61219b602083018661214f565b81810360408301526121ad8185611d5d565b90506121bc6060830184611da5565b95945050505050565b6000610160820190506121db600083018e611d21565b6121e8602083018d61214f565b81810360408301526121fa818c611d5d565b9050612209606083018b611da5565b612216608083018a611db4565b61222360a0830189611db4565b61223060c0830188611db4565b61223d60e0830187611d21565b61224b610100830186611d12565b81810361012083015261225e8185611d5d565b905061226e610140830184611d21565b9c9b505050505050505050505050565b60006020820190506122936000830184611d3f565b92915050565b60006040820190506122ae6000830185611d3f565b6122bb6020830184611d30565b9392505050565b60006020820190506122d76000830184611d4e565b92915050565b60006020820190506122f26000830184611d96565b92915050565b6000602082019050818103600083015261231181611dc3565b9050919050565b6000602082019050818103600083015261233181611e03565b9050919050565b6000602082019050818103600083015261235181611e69565b9050919050565b6000602082019050818103600083015261237181611ea9565b9050919050565b6000602082019050818103600083015261239181611ee9565b9050919050565b600060208201905081810360008301526123b181611f4f565b9050919050565b600060208201905081810360008301526123d181611f8f565b9050919050565b600060208201905081810360008301526123f181611fcf565b9050919050565b600060208201905081810360008301526124118161200f565b9050919050565b600060208201905081810360008301526124318161204f565b9050919050565b600060208201905081810360008301526124518161208f565b9050919050565b60006020820190508181036000830152612471816120cf565b9050919050565b600060208201905081810360008301526124918161210f565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156124bf576124be612694565b5b8060405250919050565b600067ffffffffffffffff8211156124e4576124e3612694565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612531826125b1565b9050919050565b6000612543826125b1565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061259782612526565b9050919050565b60008190506125ac826126d4565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125e6826125ed565b9050919050565b60006125f8826125b1565b9050919050565b600061260a8261259e565b9050919050565b600061261c826125d1565b9050919050565b82818337600083830152505050565b60005b83811015612650578082015181840152602081019050612635565b8381111561265f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b600281106126e5576126e4612665565b5b50565b6126f181612526565b81146126fc57600080fd5b50565b61270881612538565b811461271357600080fd5b50565b61271f8161254a565b811461272a57600080fd5b50565b61273681612556565b811461274157600080fd5b50565b61274d8161258c565b811461275857600080fd5b50565b6002811061276857600080fd5b50565b612774816125d1565b811461277f57600080fd5b5056fea2646970667358221220ceef5892a76980143a1b74e3aedd859d845e820f554ac71196adefc43ca51d6b64736f6c63430008000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806392eefe9b116100a2578063d4b8399211610071578063d4b8399214610281578063e19a9dd91461029f578063e69aa771146102bb578063f2fde38b146102d7578063f77c4791146102f357610116565b806392eefe9b1461020d5780639a8a059214610229578063a4f9edbf14610247578063c91063891461026357610116565b80635aef7de6116100e95780635aef7de61461018d578063715018a6146101ab578063776d1a01146101b55780637ceab3b1146101d15780638da5cb5b146101ef57610116565b8063086cfca81461011b5780631062b39a146101375780634164139f1461015557806356f0cb0114610171575b600080fd5b61013560048036038101906101309190611b00565b610311565b005b61013f610453565b60405161014c91906122dd565b60405180910390f35b61016f600480360381019061016a9190611bdb565b610479565b005b61018b60048036038101906101869190611b00565b61076c565b005b6101956108bd565b6040516101a2919061215e565b60405180910390f35b6101b36108e3565b005b6101cf60048036038101906101ca9190611b00565b61096b565b005b6101d9610aad565b6040516101e6919061215e565b60405180910390f35b6101f7610ad3565b604051610204919061215e565b60405180910390f35b61022760048036038101906102229190611b00565b610afd565b005b610231610c4e565b60405161023e919061227e565b60405180910390f35b610261600480360381019061025c9190611cd1565b610c54565b005b61026b610efe565b604051610278919061215e565b60405180910390f35b610289610f28565b604051610296919061215e565b60405180910390f35b6102b960048036038101906102b49190611b00565b610f4e565b005b6102d560048036038101906102d09190611c7f565b611184565b005b6102f160048036038101906102ec9190611b00565b61124f565b005b6102fb611347565b604051610308919061215e565b60405180910390f35b61031961136d565b73ffffffffffffffffffffffffffffffffffffffff16610337610ad3565b73ffffffffffffffffffffffffffffffffffffffff161461038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038490612398565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050090612478565b60405180910390fd5b606a54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e307dff6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057457600080fd5b505afa158015610588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ac9190611ca8565b146105ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e3906122f8565b60405180910390fd5b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b15801561068d57600080fd5b505afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c59190611b29565b73ffffffffffffffffffffffffffffffffffffffff161461071b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071290612338565b60405180910390fd5b61072784848484611375565b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d90612458565b60405180910390fd5b50505050565b61077461136d565b73ffffffffffffffffffffffffffffffffffffffff16610792610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612398565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610870906123f8565b60405180910390fd5b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108eb61136d565b73ffffffffffffffffffffffffffffffffffffffff16610909610ad3565b73ffffffffffffffffffffffffffffffffffffffff161461095f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095690612398565b60405180910390fd5b610969600061166a565b565b61097361136d565b73ffffffffffffffffffffffffffffffffffffffff16610991610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de90612398565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0561136d565b73ffffffffffffffffffffffffffffffffffffffff16610b23610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090612398565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906123b8565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a5481565b60008060008060008086806020019051810190610c719190611b52565b955095509550955095509550610c85611730565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec906123d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90612358565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a81905550610e798661124f565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f523e377a4bf6c92e5fc7d99462b1d7f983014116ff0c646eba7267d11aba842c87604051610eed919061215e565b60405180910390a450505050505050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f5661136d565b73ffffffffffffffffffffffffffffffffffffffff16610f74610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc190612398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146110e7578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161105791906122c2565b60206040518083038186803b15801561106f57600080fd5b505afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a79190611c56565b6110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90612418565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611179919061215e565b60405180910390a150565b61118c61136d565b73ffffffffffffffffffffffffffffffffffffffff166111aa610ad3565b73ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612398565b60405180910390fd5b80606a541415611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90612438565b60405180910390fd5b80606a8190555050565b61125761136d565b73ffffffffffffffffffffffffffffffffffffffff16611275610ad3565b73ffffffffffffffffffffffffffffffffffffffff16146112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290612398565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561133b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133290612318565b60405180910390fd5b6113448161166a565b50565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a757606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016114749b9a999897969594939291906121c5565b600060405180830381600087803b15801561148e57600080fd5b505af11580156114a2573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016115089493929190612179565b602060405180830381600087803b15801561152257600080fd5b505af1158015611536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155a9190611c56565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461166257606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161162f929190612299565b600060405180830381600087803b15801561164957600080fd5b505af115801561165d573d6000803e3d6000fd5b505050505b949350505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680611756575060008054906101000a900460ff16155b611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156117e5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6117ed611819565b6117f56118f2565b80156118165760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168061183f575060008054906101000a900460ff16155b61187e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187590612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156118ce576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156118ef5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611918575060008054906101000a900460ff16155b611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90612378565b60405180910390fd5b60008060019054906101000a900460ff1615905080156119a7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6119b76119b261136d565b61166a565b80156119d85760008060016101000a81548160ff0219169083151502179055505b50565b60006119ee6119e9846124c9565b612498565b905082815260208101848484011115611a0657600080fd5b611a11848285612623565b509392505050565b600081359050611a28816126e8565b92915050565b600081519050611a3d816126e8565b92915050565b600081519050611a52816126ff565b92915050565b600081519050611a6781612716565b92915050565b600081359050611a7c8161272d565b92915050565b600081519050611a918161272d565b92915050565b600082601f830112611aa857600080fd5b8135611ab88482602086016119db565b91505092915050565b600081519050611ad081612744565b92915050565b600081359050611ae58161275b565b92915050565b600081359050611afa8161276b565b92915050565b600060208284031215611b1257600080fd5b6000611b2084828501611a19565b91505092915050565b600060208284031215611b3b57600080fd5b6000611b4984828501611a2e565b91505092915050565b60008060008060008060c08789031215611b6b57600080fd5b6000611b7989828a01611a43565b9650506020611b8a89828a01611a43565b9550506040611b9b89828a01611a43565b9450506060611bac89828a01611ac1565b9350506080611bbd89828a01611a43565b92505060a0611bce89828a01611a82565b9150509295509295509295565b60008060008060808587031215611bf157600080fd5b6000611bff87828801611a19565b9450506020611c1087828801611aeb565b935050604085013567ffffffffffffffff811115611c2d57600080fd5b611c3987828801611a97565b9250506060611c4a87828801611ad6565b91505092959194509250565b600060208284031215611c6857600080fd5b6000611c7684828501611a58565b91505092915050565b600060208284031215611c9157600080fd5b6000611c9f84828501611a6d565b91505092915050565b600060208284031215611cba57600080fd5b6000611cc884828501611a82565b91505092915050565b600060208284031215611ce357600080fd5b600082013567ffffffffffffffff811115611cfd57600080fd5b611d0984828501611a97565b91505092915050565b611d1b81612538565b82525050565b611d2a81612526565b82525050565b611d398161254a565b82525050565b611d4881612556565b82525050565b611d5781612560565b82525050565b6000611d68826124f9565b611d728185612504565b9350611d82818560208601612632565b611d8b816126c3565b840191505092915050565b611d9f816125db565b82525050565b611dae816125ff565b82525050565b611dbd81612611565b82525050565b6000611dd0601483612515565b91507f556e617574686f72697a656420636861696e49640000000000000000000000006000830152602082019050919050565b6000611e10602683612515565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e76601783612515565b91507f556e617574686f72697a656420636f6e74726f6c6c65720000000000000000006000830152602082019050919050565b6000611eb6601e83612515565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000611ef6602e83612515565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000611f5c602083612515565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000611f9c601e83612515565b91507f636f6e74726f6c6c657220616c72656164792073657420746f207468697300006000830152602082019050919050565b6000611fdc601e83612515565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600061201c601f83612515565b91507f414d42206164647265737320616c72656164792073657420746f2074686973006000830152602082019050919050565b600061205c602083612515565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b600061209c601b83612515565b91507f636861696e496420616c72656164792073657420746f207468697300000000006000830152602082019050919050565b60006120dc601983612515565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b600061211c601083612515565b91507f556e617574686f72697a656420616d62000000000000000000000000000000006000830152602082019050919050565b612158816125d1565b82525050565b60006020820190506121736000830184611d21565b92915050565b600060808201905061218e6000830187611d21565b61219b602083018661214f565b81810360408301526121ad8185611d5d565b90506121bc6060830184611da5565b95945050505050565b6000610160820190506121db600083018e611d21565b6121e8602083018d61214f565b81810360408301526121fa818c611d5d565b9050612209606083018b611da5565b612216608083018a611db4565b61222360a0830189611db4565b61223060c0830188611db4565b61223d60e0830187611d21565b61224b610100830186611d12565b81810361012083015261225e8185611d5d565b905061226e610140830184611d21565b9c9b505050505050505050505050565b60006020820190506122936000830184611d3f565b92915050565b60006040820190506122ae6000830185611d3f565b6122bb6020830184611d30565b9392505050565b60006020820190506122d76000830184611d4e565b92915050565b60006020820190506122f26000830184611d96565b92915050565b6000602082019050818103600083015261231181611dc3565b9050919050565b6000602082019050818103600083015261233181611e03565b9050919050565b6000602082019050818103600083015261235181611e69565b9050919050565b6000602082019050818103600083015261237181611ea9565b9050919050565b6000602082019050818103600083015261239181611ee9565b9050919050565b600060208201905081810360008301526123b181611f4f565b9050919050565b600060208201905081810360008301526123d181611f8f565b9050919050565b600060208201905081810360008301526123f181611fcf565b9050919050565b600060208201905081810360008301526124118161200f565b9050919050565b600060208201905081810360008301526124318161204f565b9050919050565b600060208201905081810360008301526124518161208f565b9050919050565b60006020820190508181036000830152612471816120cf565b9050919050565b600060208201905081810360008301526124918161210f565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156124bf576124be612694565b5b8060405250919050565b600067ffffffffffffffff8211156124e4576124e3612694565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612531826125b1565b9050919050565b6000612543826125b1565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061259782612526565b9050919050565b60008190506125ac826126d4565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006125e6826125ed565b9050919050565b60006125f8826125b1565b9050919050565b600061260a8261259e565b9050919050565b600061261c826125d1565b9050919050565b82818337600083830152505050565b60005b83811015612650578082015181840152602081019050612635565b8381111561265f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b600281106126e5576126e4612665565b5b50565b6126f181612526565b81146126fc57600080fd5b50565b61270881612538565b811461271357600080fd5b50565b61271f8161254a565b811461272a57600080fd5b50565b61273681612556565b811461274157600080fd5b50565b61274d8161258c565b811461275857600080fd5b50565b6002811061276857600080fd5b50565b612774816125d1565b811461277f57600080fd5b5056fea2646970667358221220ceef5892a76980143a1b74e3aedd859d845e820f554ac71196adefc43ca51d6b64736f6c63430008000033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/ConnextModule.json b/packages/app/src/contracts/ConnextModule.json deleted file mode 100644 index 1f3c0bc6..00000000 --- a/packages/app/src/contracts/ConnextModule.json +++ /dev/null @@ -1,502 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ConnextModule", - "sourceName": "contracts/ConnextModule.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "address", - "name": "_originSender", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_origin", - "type": "uint32" - }, - { - "internalType": "address", - "name": "_connext", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ConnextOnly", - "type": "error" - }, - { - "inputs": [], - "name": "ModuleTransactionFailed", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "guard_", - "type": "address" - } - ], - "name": "NotIERC165Compliant", - "type": "error" - }, - { - "inputs": [], - "name": "OriginOnly", - "type": "error" - }, - { - "inputs": [], - "name": "OriginSenderOnly", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "connext", - "type": "address" - } - ], - "name": "ConnextSet", - "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": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "originSender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint32", - "name": "origin", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "address", - "name": "connext", - "type": "address" - } - ], - "name": "ModuleSetUp", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "originSender", - "type": "address" - } - ], - "name": "OriginSenderSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint32", - "name": "origin", - "type": "uint32" - } - ], - "name": "OriginSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "connext", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "origin", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "originSender", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_connext", - "type": "address" - } - ], - "name": "setConnext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_origin", - "type": "uint32" - } - ], - "name": "setOrigin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_originSender", - "type": "address" - } - ], - "name": "setOriginSender", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initializeParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_asset", - "type": "address" - }, - { - "internalType": "address", - "name": "_originSender", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_origin", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_callData", - "type": "bytes" - } - ], - "name": "xReceive", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200381638038062003816833981810160405281019062000037919062000b26565b6000868686868686604051602001620000569695949392919062000be4565b604051602081830303815290604052905062000078816200008560201b60201c565b50505050505050620010a0565b60008060019054906101000a900460ff16159050808015620000b75750600160008054906101000a900460ff1660ff16105b80620000f35750620000d4306200036660201b62000f301760201c565b158015620000f25750600160008054906101000a900460ff1660ff16145b5b62000135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200012c9062000cd8565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801562000173576001600060016101000a81548160ff0219169083151502179055505b620001836200038960201b60201c565b60008060008060008087806020019051810190620001a2919062000d3f565b955095509550955095509550620001bf85620003ed60201b60201c565b620001d084620004c360201b60201c565b620001e1836200059960201b60201c565b620001f282620006ba60201b60201c565b62000203816200073960201b60201c565b6200021486620007e860201b60201c565b7ffbecf7f616d45ca601cf03f4f9ffe701a5075bb7372227842c496db02bd3aecd620002456200087e60201b60201c565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960149054906101000a900463ffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620002f89695949392919062000be4565b60405180910390a15050505050508015620003625760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405162000359919062000e35565b60405180910390a15b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16620003db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d29062000ec8565b60405180910390fd5b620003eb620008a860201b60201c565b565b620003fd6200091c60201b60201c565b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b620004d36200091c60201b60201c565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b620005a96200091c60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200061b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006129062000f3a565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f54301631e962ee8d9655adadf9ff34e8027ac0a2a36ba16f0bf24f05ebb97a84606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620006af919062000f5c565b60405180910390a150565b620006ca6200091c60201b60201c565b80606960146101000a81548163ffffffff021916908363ffffffff1602179055507f2129f7c349bc9434d7098c42eb37a2df23cc694bf18743a747305cf2430bdb71606960149054906101000a900463ffffffff166040516200072e919062000f79565b60405180910390a150565b620007496200091c60201b60201c565b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f08c3335cb99fd4f1aef7ddc8d0fefc3709ad4c2b80690bcd09000387de510f5f606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620007dd919062000f5c565b60405180910390a150565b620007f86200091c60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200086a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000861906200100c565b60405180910390fd5b6200087b81620009ad60201b60201c565b50565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060019054906101000a900460ff16620008fa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f19062000ec8565b60405180910390fd5b6200091a6200090e62000a7360201b60201c565b620009ad60201b60201c565b565b6200092c62000a7360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009526200087e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a2906200107e565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aad8262000a80565b9050919050565b62000abf8162000aa0565b811462000acb57600080fd5b50565b60008151905062000adf8162000ab4565b92915050565b600063ffffffff82169050919050565b62000b008162000ae5565b811462000b0c57600080fd5b50565b60008151905062000b208162000af5565b92915050565b60008060008060008060c0878903121562000b465762000b4562000a7b565b5b600062000b5689828a0162000ace565b965050602062000b6989828a0162000ace565b955050604062000b7c89828a0162000ace565b945050606062000b8f89828a0162000ace565b935050608062000ba289828a0162000b0f565b92505060a062000bb589828a0162000ace565b9150509295509295509295565b62000bcd8162000aa0565b82525050565b62000bde8162000ae5565b82525050565b600060c08201905062000bfb600083018962000bc2565b62000c0a602083018862000bc2565b62000c19604083018762000bc2565b62000c28606083018662000bc2565b62000c37608083018562000bd3565b62000c4660a083018462000bc2565b979650505050505050565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600062000cc0602e8362000c51565b915062000ccd8262000c62565b604082019050919050565b6000602082019050818103600083015262000cf38162000cb1565b9050919050565b600062000d078262000a80565b9050919050565b62000d198162000cfa565b811462000d2557600080fd5b50565b60008151905062000d398162000d0e565b92915050565b60008060008060008060c0878903121562000d5f5762000d5e62000a7b565b5b600062000d6f89828a0162000d28565b965050602062000d8289828a0162000d28565b955050604062000d9589828a0162000d28565b945050606062000da889828a0162000d28565b935050608062000dbb89828a0162000b0f565b92505060a062000dce89828a0162000d28565b9150509295509295509295565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600062000e1d62000e1762000e118462000ddb565b62000df2565b62000de5565b9050919050565b62000e2f8162000dfc565b82525050565b600060208201905062000e4c600083018462000e24565b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b600062000eb0602b8362000c51565b915062000ebd8262000e52565b604082019050919050565b6000602082019050818103600083015262000ee38162000ea1565b9050919050565b7f53656e6465722073686f756c64206e6f74206265206164647265737328302900600082015250565b600062000f22601f8362000c51565b915062000f2f8262000eea565b602082019050919050565b6000602082019050818103600083015262000f558162000f13565b9050919050565b600060208201905062000f73600083018462000bc2565b92915050565b600060208201905062000f90600083018462000bd3565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062000ff460268362000c51565b9150620010018262000f96565b604082019050919050565b60006020820190508181036000830152620010278162000fe5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200106660208362000c51565b915062001073826200102e565b602082019050919050565b60006020820190508181036000830152620010998162001057565b9050919050565b61276680620010b06000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063d4b8399211610071578063d4b8399214610281578063de4b05481461029f578063e19a9dd9146102bd578063f2fde38b146102d9578063fd614f41146102f557610116565b80638da5cb5b1461020b578063938b5f3214610229578063a4f9edbf14610247578063c91063891461026357610116565b80634d6f2013116100e95780634d6f20131461018d5780635aef7de6146101a9578063715018a6146101c7578063776d1a01146101d15780637ceab3b1146101ed57610116565b8063086cfca81461011b5780632b59241f146101375780633442a18b1461015557806346dbe06e14610171575b600080fd5b610135600480360381019061013091906117d9565b610325565b005b61013f6103f3565b60405161014c9190611815565b60405180910390f35b61016f600480360381019061016a91906117d9565b610419565b005b61018b6004803603810190610186919061186c565b61052d565b005b6101a760048036038101906101a291906117d9565b6105a2565b005b6101b1610647565b6040516101be9190611815565b60405180910390f35b6101cf61066d565b005b6101eb60048036038101906101e691906117d9565b610681565b005b6101f561074f565b6040516102029190611815565b60405180910390f35b610213610775565b6040516102209190611815565b60405180910390f35b61023161079f565b60405161023e91906118a8565b60405180910390f35b610261600480360381019061025c9190611a09565b6107b5565b005b61026b610a3b565b6040516102789190611815565b60405180910390f35b610289610a65565b6040516102969190611815565b60405180910390f35b6102a7610a8b565b6040516102b49190611815565b60405180910390f35b6102d760048036038101906102d291906117d9565b610ab1565b005b6102f360048036038101906102ee91906117d9565b610c66565b005b61030f600480360381019061030a9190611abe565b610ce9565b60405161031c9190611bef565b60405180910390f35b61032d610f53565b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610421610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790611c6e565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f54301631e962ee8d9655adadf9ff34e8027ac0a2a36ba16f0bf24f05ebb97a84606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105229190611815565b60405180910390a150565b610535610f53565b80606960146101000a81548163ffffffff021916908363ffffffff1602179055507f2129f7c349bc9434d7098c42eb37a2df23cc694bf18743a747305cf2430bdb71606960149054906101000a900463ffffffff1660405161059791906118a8565b60405180910390a150565b6105aa610f53565b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f08c3335cb99fd4f1aef7ddc8d0fefc3709ad4c2b80690bcd09000387de510f5f606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161063c9190611815565b60405180910390a150565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610675610f53565b61067f6000610fd1565b565b610689610f53565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606960149054906101000a900463ffffffff1681565b60008060019054906101000a900460ff161590508080156107e65750600160008054906101000a900460ff1660ff16105b8061081357506107f530610f30565b1580156108125750600160008054906101000a900460ff1660ff16145b5b610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990611d00565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561088f576001600060016101000a81548160ff0219169083151502179055505b610897611097565b600080600080600080878060200190518101906108b49190611d73565b9550955095509550955095506108c985610325565b6108d284610681565b6108db83610419565b6108e48261052d565b6108ed816105a2565b6108f686610c66565b7ffbecf7f616d45ca601cf03f4f9ffe701a5075bb7372227842c496db02bd3aecd61091f610775565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960149054906101000a900463ffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516109d096959493929190611e00565b60405180910390a15050505050508015610a375760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a2e9190611eb3565b60405180910390a15b5050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab9610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc9578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b469190611f09565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b879190611f5c565b610bc857806040517fb16ea67e000000000000000000000000000000000000000000000000000000008152600401610bbf9190611815565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c5b9190611815565b60405180910390a150565b610c6e610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490611ffb565b60405180910390fd5b610ce681610fd1565b50565b60608383606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d74576040517fc891745f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f9f4f524800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606960149054906101000a900463ffffffff1663ffffffff168163ffffffff1614610e52576040517f629aec0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008087806020019051810190610e6c91906120c5565b935093509350935060008b905060008d1115610ed057610ecf606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168e8373ffffffffffffffffffffffffffffffffffffffff166110f09092919063ffffffff16565b5b600080610edf87878787611176565b9150915081610f1a576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8099505050505050505050509695505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b610f5b61146a565b73ffffffffffffffffffffffffffffffffffffffff16610f79610775565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690612194565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff166110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90612226565b60405180910390fd5b6110ee611472565b565b6111718363a9059cbb60e01b848460405160240161110f929190612255565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114d3565b505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112aa57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528787878760008060008060006040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250336040518c63ffffffff1660e01b81526004016112779b9a9998979695949392919061233f565b600060405180830381600087803b15801561129157600080fd5b505af11580156112a5573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635229073f878787876040518563ffffffff1660e01b815260040161130b94939291906123f8565b6000604051808303816000875af115801561132a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113539190612444565b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b815260040161142e9291906124be565b600060405180830381600087803b15801561144857600080fd5b505af115801561145c573d6000803e3d6000fd5b505050505b94509492505050565b600033905090565b600060019054906101000a900460ff166114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612226565b60405180910390fd5b6114d16114cc61146a565b610fd1565b565b6000611535826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661159a9092919063ffffffff16565b905060008151111561159557808060200190518101906115559190611f5c565b611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612559565b60405180910390fd5b5b505050565b60606115a984846000856115b2565b90509392505050565b6060824710156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906125eb565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116209190612647565b60006040518083038185875af1925050503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b50915091506116738783838761167f565b92505050949350505050565b606083156116e15760008351036116d957611699856116f4565b6116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906126aa565b60405180910390fd5b5b8290506116ec565b6116eb8383611717565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561172a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e919061270e565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117a68261177b565b9050919050565b6117b68161179b565b81146117c157600080fd5b50565b6000813590506117d3816117ad565b92915050565b6000602082840312156117ef576117ee611771565b5b60006117fd848285016117c4565b91505092915050565b61180f8161179b565b82525050565b600060208201905061182a6000830184611806565b92915050565b600063ffffffff82169050919050565b61184981611830565b811461185457600080fd5b50565b60008135905061186681611840565b92915050565b60006020828403121561188257611881611771565b5b600061189084828501611857565b91505092915050565b6118a281611830565b82525050565b60006020820190506118bd6000830184611899565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611916826118cd565b810181811067ffffffffffffffff82111715611935576119346118de565b5b80604052505050565b6000611948611767565b9050611954828261190d565b919050565b600067ffffffffffffffff821115611974576119736118de565b5b61197d826118cd565b9050602081019050919050565b82818337600083830152505050565b60006119ac6119a784611959565b61193e565b9050828152602081018484840111156119c8576119c76118c8565b5b6119d384828561198a565b509392505050565b600082601f8301126119f0576119ef6118c3565b5b8135611a00848260208601611999565b91505092915050565b600060208284031215611a1f57611a1e611771565b5b600082013567ffffffffffffffff811115611a3d57611a3c611776565b5b611a49848285016119db565b91505092915050565b6000819050919050565b611a6581611a52565b8114611a7057600080fd5b50565b600081359050611a8281611a5c565b92915050565b6000819050919050565b611a9b81611a88565b8114611aa657600080fd5b50565b600081359050611ab881611a92565b92915050565b60008060008060008060c08789031215611adb57611ada611771565b5b6000611ae989828a01611a73565b9650506020611afa89828a01611aa9565b9550506040611b0b89828a016117c4565b9450506060611b1c89828a016117c4565b9350506080611b2d89828a01611857565b92505060a087013567ffffffffffffffff811115611b4e57611b4d611776565b5b611b5a89828a016119db565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ba1578082015181840152602081019050611b86565b83811115611bb0576000848401525b50505050565b6000611bc182611b67565b611bcb8185611b72565b9350611bdb818560208601611b83565b611be4816118cd565b840191505092915050565b60006020820190508181036000830152611c098184611bb6565b905092915050565b600082825260208201905092915050565b7f53656e6465722073686f756c64206e6f74206265206164647265737328302900600082015250565b6000611c58601f83611c11565b9150611c6382611c22565b602082019050919050565b60006020820190508181036000830152611c8781611c4b565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000611cea602e83611c11565b9150611cf582611c8e565b604082019050919050565b60006020820190508181036000830152611d1981611cdd565b9050919050565b6000611d2b8261177b565b9050919050565b611d3b81611d20565b8114611d4657600080fd5b50565b600081519050611d5881611d32565b92915050565b600081519050611d6d81611840565b92915050565b60008060008060008060c08789031215611d9057611d8f611771565b5b6000611d9e89828a01611d49565b9650506020611daf89828a01611d49565b9550506040611dc089828a01611d49565b9450506060611dd189828a01611d49565b9350506080611de289828a01611d5e565b92505060a0611df389828a01611d49565b9150509295509295509295565b600060c082019050611e156000830189611806565b611e226020830188611806565b611e2f6040830187611806565b611e3c6060830186611806565b611e496080830185611899565b611e5660a0830184611806565b979650505050505050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000611e9d611e98611e9384611e61565b611e78565b611e6b565b9050919050565b611ead81611e82565b82525050565b6000602082019050611ec86000830184611ea4565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f0381611ece565b82525050565b6000602082019050611f1e6000830184611efa565b92915050565b60008115159050919050565b611f3981611f24565b8114611f4457600080fd5b50565b600081519050611f5681611f30565b92915050565b600060208284031215611f7257611f71611771565b5b6000611f8084828501611f47565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fe5602683611c11565b9150611ff082611f89565b604082019050919050565b6000602082019050818103600083015261201481611fd8565b9050919050565b60008151905061202a81611a92565b92915050565b600061204361203e84611959565b61193e565b90508281526020810184848401111561205f5761205e6118c8565b5b61206a848285611b83565b509392505050565b600082601f830112612087576120866118c3565b5b8151612097848260208601612030565b91505092915050565b600281106120ad57600080fd5b50565b6000815190506120bf816120a0565b92915050565b600080600080608085870312156120df576120de611771565b5b60006120ed87828801611d49565b94505060206120fe8782880161201b565b935050604085015167ffffffffffffffff81111561211f5761211e611776565b5b61212b87828801612072565b925050606061213c878288016120b0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061217e602083611c11565b915061218982612148565b602082019050919050565b600060208201905081810360008301526121ad81612171565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000612210602b83611c11565b915061221b826121b4565b604082019050919050565b6000602082019050818103600083015261223f81612203565b9050919050565b61224f81611a88565b82525050565b600060408201905061226a6000830185611806565b6122776020830184612246565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106122be576122bd61227e565b5b50565b60008190506122cf826122ad565b919050565b60006122df826122c1565b9050919050565b6122ef816122d4565b82525050565b6000819050919050565b600061231a612315612310846122f5565b611e78565b611a88565b9050919050565b61232a816122ff565b82525050565b61233981611d20565b82525050565b600061016082019050612355600083018e611806565b612362602083018d612246565b8181036040830152612374818c611bb6565b9050612383606083018b6122e6565b612390608083018a612321565b61239d60a0830189612321565b6123aa60c0830188612321565b6123b760e0830187611806565b6123c5610100830186612330565b8181036101208301526123d88185611bb6565b90506123e8610140830184611806565b9c9b505050505050505050505050565b600060808201905061240d6000830187611806565b61241a6020830186612246565b818103604083015261242c8185611bb6565b905061243b60608301846122e6565b95945050505050565b6000806040838503121561245b5761245a611771565b5b600061246985828601611f47565b925050602083015167ffffffffffffffff81111561248a57612489611776565b5b61249685828601612072565b9150509250929050565b6124a981611a52565b82525050565b6124b881611f24565b82525050565b60006040820190506124d360008301856124a0565b6124e060208301846124af565b9392505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000612543602a83611c11565b915061254e826124e7565b604082019050919050565b6000602082019050818103600083015261257281612536565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006125d5602683611c11565b91506125e082612579565b604082019050919050565b60006020820190508181036000830152612604816125c8565b9050919050565b600081905092915050565b600061262182611b67565b61262b818561260b565b935061263b818560208601611b83565b80840191505092915050565b60006126538284612616565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000612694601d83611c11565b915061269f8261265e565b602082019050919050565b600060208201905081810360008301526126c381612687565b9050919050565b600081519050919050565b60006126e0826126ca565b6126ea8185611c11565b93506126fa818560208601611b83565b612703816118cd565b840191505092915050565b6000602082019050818103600083015261272881846126d5565b90509291505056fea26469706673582212201cd60d7e0e0567acae803c5a73a10e8590dc86026b02634c4c2c98913e54cf9364736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063d4b8399211610071578063d4b8399214610281578063de4b05481461029f578063e19a9dd9146102bd578063f2fde38b146102d9578063fd614f41146102f557610116565b80638da5cb5b1461020b578063938b5f3214610229578063a4f9edbf14610247578063c91063891461026357610116565b80634d6f2013116100e95780634d6f20131461018d5780635aef7de6146101a9578063715018a6146101c7578063776d1a01146101d15780637ceab3b1146101ed57610116565b8063086cfca81461011b5780632b59241f146101375780633442a18b1461015557806346dbe06e14610171575b600080fd5b610135600480360381019061013091906117d9565b610325565b005b61013f6103f3565b60405161014c9190611815565b60405180910390f35b61016f600480360381019061016a91906117d9565b610419565b005b61018b6004803603810190610186919061186c565b61052d565b005b6101a760048036038101906101a291906117d9565b6105a2565b005b6101b1610647565b6040516101be9190611815565b60405180910390f35b6101cf61066d565b005b6101eb60048036038101906101e691906117d9565b610681565b005b6101f561074f565b6040516102029190611815565b60405180910390f35b610213610775565b6040516102209190611815565b60405180910390f35b61023161079f565b60405161023e91906118a8565b60405180910390f35b610261600480360381019061025c9190611a09565b6107b5565b005b61026b610a3b565b6040516102789190611815565b60405180910390f35b610289610a65565b6040516102969190611815565b60405180910390f35b6102a7610a8b565b6040516102b49190611815565b60405180910390f35b6102d760048036038101906102d291906117d9565b610ab1565b005b6102f360048036038101906102ee91906117d9565b610c66565b005b61030f600480360381019061030a9190611abe565b610ce9565b60405161031c9190611bef565b60405180910390f35b61032d610f53565b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610421610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048790611c6e565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f54301631e962ee8d9655adadf9ff34e8027ac0a2a36ba16f0bf24f05ebb97a84606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105229190611815565b60405180910390a150565b610535610f53565b80606960146101000a81548163ffffffff021916908363ffffffff1602179055507f2129f7c349bc9434d7098c42eb37a2df23cc694bf18743a747305cf2430bdb71606960149054906101000a900463ffffffff1660405161059791906118a8565b60405180910390a150565b6105aa610f53565b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f08c3335cb99fd4f1aef7ddc8d0fefc3709ad4c2b80690bcd09000387de510f5f606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161063c9190611815565b60405180910390a150565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610675610f53565b61067f6000610fd1565b565b610689610f53565b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606960149054906101000a900463ffffffff1681565b60008060019054906101000a900460ff161590508080156107e65750600160008054906101000a900460ff1660ff16105b8061081357506107f530610f30565b1580156108125750600160008054906101000a900460ff1660ff16145b5b610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990611d00565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561088f576001600060016101000a81548160ff0219169083151502179055505b610897611097565b600080600080600080878060200190518101906108b49190611d73565b9550955095509550955095506108c985610325565b6108d284610681565b6108db83610419565b6108e48261052d565b6108ed816105a2565b6108f686610c66565b7ffbecf7f616d45ca601cf03f4f9ffe701a5075bb7372227842c496db02bd3aecd61091f610775565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606960149054906101000a900463ffffffff16606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516109d096959493929190611e00565b60405180910390a15050505050508015610a375760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051610a2e9190611eb3565b60405180910390a15b5050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab9610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc9578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610b469190611f09565b602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b879190611f5c565b610bc857806040517fb16ea67e000000000000000000000000000000000000000000000000000000008152600401610bbf9190611815565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c5b9190611815565b60405180910390a150565b610c6e610f53565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490611ffb565b60405180910390fd5b610ce681610fd1565b50565b60608383606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d74576040517fc891745f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f9f4f524800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606960149054906101000a900463ffffffff1663ffffffff168163ffffffff1614610e52576040517f629aec0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008087806020019051810190610e6c91906120c5565b935093509350935060008b905060008d1115610ed057610ecf606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168e8373ffffffffffffffffffffffffffffffffffffffff166110f09092919063ffffffff16565b5b600080610edf87878787611176565b9150915081610f1a576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8099505050505050505050509695505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b610f5b61146a565b73ffffffffffffffffffffffffffffffffffffffff16610f79610775565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690612194565b60405180910390fd5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff166110e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dd90612226565b60405180910390fd5b6110ee611472565b565b6111718363a9059cbb60e01b848460405160240161110f929190612255565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506114d3565b505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112aa57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528787878760008060008060006040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250336040518c63ffffffff1660e01b81526004016112779b9a9998979695949392919061233f565b600060405180830381600087803b15801561129157600080fd5b505af11580156112a5573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635229073f878787876040518563ffffffff1660e01b815260040161130b94939291906123f8565b6000604051808303816000875af115801561132a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906113539190612444565b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b815260040161142e9291906124be565b600060405180830381600087803b15801561144857600080fd5b505af115801561145c573d6000803e3d6000fd5b505050505b94509492505050565b600033905090565b600060019054906101000a900460ff166114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890612226565b60405180910390fd5b6114d16114cc61146a565b610fd1565b565b6000611535826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661159a9092919063ffffffff16565b905060008151111561159557808060200190518101906115559190611f5c565b611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612559565b60405180910390fd5b5b505050565b60606115a984846000856115b2565b90509392505050565b6060824710156115f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ee906125eb565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116209190612647565b60006040518083038185875af1925050503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b50915091506116738783838761167f565b92505050949350505050565b606083156116e15760008351036116d957611699856116f4565b6116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cf906126aa565b60405180910390fd5b5b8290506116ec565b6116eb8383611717565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561172a5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e919061270e565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117a68261177b565b9050919050565b6117b68161179b565b81146117c157600080fd5b50565b6000813590506117d3816117ad565b92915050565b6000602082840312156117ef576117ee611771565b5b60006117fd848285016117c4565b91505092915050565b61180f8161179b565b82525050565b600060208201905061182a6000830184611806565b92915050565b600063ffffffff82169050919050565b61184981611830565b811461185457600080fd5b50565b60008135905061186681611840565b92915050565b60006020828403121561188257611881611771565b5b600061189084828501611857565b91505092915050565b6118a281611830565b82525050565b60006020820190506118bd6000830184611899565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611916826118cd565b810181811067ffffffffffffffff82111715611935576119346118de565b5b80604052505050565b6000611948611767565b9050611954828261190d565b919050565b600067ffffffffffffffff821115611974576119736118de565b5b61197d826118cd565b9050602081019050919050565b82818337600083830152505050565b60006119ac6119a784611959565b61193e565b9050828152602081018484840111156119c8576119c76118c8565b5b6119d384828561198a565b509392505050565b600082601f8301126119f0576119ef6118c3565b5b8135611a00848260208601611999565b91505092915050565b600060208284031215611a1f57611a1e611771565b5b600082013567ffffffffffffffff811115611a3d57611a3c611776565b5b611a49848285016119db565b91505092915050565b6000819050919050565b611a6581611a52565b8114611a7057600080fd5b50565b600081359050611a8281611a5c565b92915050565b6000819050919050565b611a9b81611a88565b8114611aa657600080fd5b50565b600081359050611ab881611a92565b92915050565b60008060008060008060c08789031215611adb57611ada611771565b5b6000611ae989828a01611a73565b9650506020611afa89828a01611aa9565b9550506040611b0b89828a016117c4565b9450506060611b1c89828a016117c4565b9350506080611b2d89828a01611857565b92505060a087013567ffffffffffffffff811115611b4e57611b4d611776565b5b611b5a89828a016119db565b9150509295509295509295565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ba1578082015181840152602081019050611b86565b83811115611bb0576000848401525b50505050565b6000611bc182611b67565b611bcb8185611b72565b9350611bdb818560208601611b83565b611be4816118cd565b840191505092915050565b60006020820190508181036000830152611c098184611bb6565b905092915050565b600082825260208201905092915050565b7f53656e6465722073686f756c64206e6f74206265206164647265737328302900600082015250565b6000611c58601f83611c11565b9150611c6382611c22565b602082019050919050565b60006020820190508181036000830152611c8781611c4b565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000611cea602e83611c11565b9150611cf582611c8e565b604082019050919050565b60006020820190508181036000830152611d1981611cdd565b9050919050565b6000611d2b8261177b565b9050919050565b611d3b81611d20565b8114611d4657600080fd5b50565b600081519050611d5881611d32565b92915050565b600081519050611d6d81611840565b92915050565b60008060008060008060c08789031215611d9057611d8f611771565b5b6000611d9e89828a01611d49565b9650506020611daf89828a01611d49565b9550506040611dc089828a01611d49565b9450506060611dd189828a01611d49565b9350506080611de289828a01611d5e565b92505060a0611df389828a01611d49565b9150509295509295509295565b600060c082019050611e156000830189611806565b611e226020830188611806565b611e2f6040830187611806565b611e3c6060830186611806565b611e496080830185611899565b611e5660a0830184611806565b979650505050505050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000611e9d611e98611e9384611e61565b611e78565b611e6b565b9050919050565b611ead81611e82565b82525050565b6000602082019050611ec86000830184611ea4565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f0381611ece565b82525050565b6000602082019050611f1e6000830184611efa565b92915050565b60008115159050919050565b611f3981611f24565b8114611f4457600080fd5b50565b600081519050611f5681611f30565b92915050565b600060208284031215611f7257611f71611771565b5b6000611f8084828501611f47565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fe5602683611c11565b9150611ff082611f89565b604082019050919050565b6000602082019050818103600083015261201481611fd8565b9050919050565b60008151905061202a81611a92565b92915050565b600061204361203e84611959565b61193e565b90508281526020810184848401111561205f5761205e6118c8565b5b61206a848285611b83565b509392505050565b600082601f830112612087576120866118c3565b5b8151612097848260208601612030565b91505092915050565b600281106120ad57600080fd5b50565b6000815190506120bf816120a0565b92915050565b600080600080608085870312156120df576120de611771565b5b60006120ed87828801611d49565b94505060206120fe8782880161201b565b935050604085015167ffffffffffffffff81111561211f5761211e611776565b5b61212b87828801612072565b925050606061213c878288016120b0565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061217e602083611c11565b915061218982612148565b602082019050919050565b600060208201905081810360008301526121ad81612171565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000612210602b83611c11565b915061221b826121b4565b604082019050919050565b6000602082019050818103600083015261223f81612203565b9050919050565b61224f81611a88565b82525050565b600060408201905061226a6000830185611806565b6122776020830184612246565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106122be576122bd61227e565b5b50565b60008190506122cf826122ad565b919050565b60006122df826122c1565b9050919050565b6122ef816122d4565b82525050565b6000819050919050565b600061231a612315612310846122f5565b611e78565b611a88565b9050919050565b61232a816122ff565b82525050565b61233981611d20565b82525050565b600061016082019050612355600083018e611806565b612362602083018d612246565b8181036040830152612374818c611bb6565b9050612383606083018b6122e6565b612390608083018a612321565b61239d60a0830189612321565b6123aa60c0830188612321565b6123b760e0830187611806565b6123c5610100830186612330565b8181036101208301526123d88185611bb6565b90506123e8610140830184611806565b9c9b505050505050505050505050565b600060808201905061240d6000830187611806565b61241a6020830186612246565b818103604083015261242c8185611bb6565b905061243b60608301846122e6565b95945050505050565b6000806040838503121561245b5761245a611771565b5b600061246985828601611f47565b925050602083015167ffffffffffffffff81111561248a57612489611776565b5b61249685828601612072565b9150509250929050565b6124a981611a52565b82525050565b6124b881611f24565b82525050565b60006040820190506124d360008301856124a0565b6124e060208301846124af565b9392505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000612543602a83611c11565b915061254e826124e7565b604082019050919050565b6000602082019050818103600083015261257281612536565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006125d5602683611c11565b91506125e082612579565b604082019050919050565b60006020820190508181036000830152612604816125c8565b9050919050565b600081905092915050565b600061262182611b67565b61262b818561260b565b935061263b818560208601611b83565b80840191505092915050565b60006126538284612616565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000612694601d83611c11565b915061269f8261265e565b602082019050919050565b600060208201905081810360008301526126c381612687565b9050919050565b600081519050919050565b60006126e0826126ca565b6126ea8185611c11565b93506126fa818560208601611b83565b612703816118cd565b840191505092915050565b6000602082019050818103600083015261272881846126d5565b90509291505056fea26469706673582212201cd60d7e0e0567acae803c5a73a10e8590dc86026b02634c4c2c98913e54cf9364736f6c634300080f0033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/Delay.json b/packages/app/src/contracts/Delay.json deleted file mode 100644 index c0175402..00000000 --- a/packages/app/src/contracts/Delay.json +++ /dev/null @@ -1,737 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Delay", - "sourceName": "contracts/Delay.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cooldown", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_expiration", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "DelaySetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "DisabledModule", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "EnabledModule", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "queueNonce", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "txHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "TransactionAdded", - "type": "event" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "prevModule", - "type": "address" - }, - { - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "disableModule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "enableModule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "execTransactionFromModule", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "execTransactionFromModuleReturnData", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "executeNextTx", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "pageSize", - "type": "uint256" - } - ], - "name": "getModulesPaginated", - "outputs": [ - { - "internalType": "address[]", - "name": "array", - "type": "address[]" - }, - { - "internalType": "address", - "name": "next", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTxCreatedAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTxHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_module", - "type": "address" - } - ], - "name": "isModuleEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "queueNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "cooldown", - "type": "uint256" - } - ], - "name": "setTxCooldown", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "expiration", - "type": "uint256" - } - ], - "name": "setTxExpiration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - } - ], - "name": "setTxNonce", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "skipExpired", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "txCooldown", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "txCreatedAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "txExpiration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "txHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "txNonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162004e2138038062004e21833981810160405281019062000037919062000a30565b600085858585856040516020016200005495949392919062000d57565b604051602081830303815290604052905062000076816200008260201b60201c565b50505050505062000f53565b600080600080600085806020019051810190620000a09190620009ae565b94509450945094509450620000ba6200032a60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200012d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001249062000e5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620001a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001979062000dd6565b60405180910390fd5b6000811480620001b15750603c8110155b620001f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ea9062000e3c565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555062000294856200042960201b60201c565b620002a46200053f60201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae50300866040516200031a919062000d3a565b60405180910390a4505050505050565b600060019054906101000a900460ff168062000351575060008054906101000a900460ff16155b62000393576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038a9062000df8565b60405180910390fd5b60008060019054906101000a900460ff161590508015620003e4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620003f46200069360201b60201c565b620004046200077260201b60201c565b8015620004265760008060016101000a81548160ff0219169083151502179055505b50565b620004396200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200045f6200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004af9062000e1a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200052b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005229062000db4565b60405180910390fd5b6200053c81620008a360201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000611576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006089062000e80565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680620006ba575060008054906101000a900460ff16155b620006fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006f39062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200074d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200076f5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000799575060008054906101000a900460ff16155b620007db576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d29062000df8565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200082c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200084c620008406200087160201b60201c565b620008a360201b60201c565b80156200086e5760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200097a8162000f05565b92915050565b600081519050620009918162000f1f565b92915050565b600081519050620009a88162000f39565b92915050565b600080600080600060a08688031215620009c757600080fd5b6000620009d78882890162000980565b9550506020620009ea8882890162000980565b9450506040620009fd8882890162000980565b935050606062000a108882890162000997565b925050608062000a238882890162000997565b9150509295509295909350565b600080600080600060a0868803121562000a4957600080fd5b600062000a598882890162000969565b955050602062000a6c8882890162000969565b945050604062000a7f8882890162000969565b935050606062000a928882890162000997565b925050608062000aa58882890162000997565b9150509295509295909350565b62000abd8162000eb3565b82525050565b600062000ad260268362000ea2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000b3a601e8362000ea2565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000b7c602e8362000ea2565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000be460208362000ea2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000c26602d8362000ea2565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b600062000c8e601e8362000ea2565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000cd060248362000ea2565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b62000d348162000efb565b82525050565b600060208201905062000d51600083018462000ab2565b92915050565b600060a08201905062000d6e600083018862000ab2565b62000d7d602083018762000ab2565b62000d8c604083018662000ab2565b62000d9b606083018562000d29565b62000daa608083018462000d29565b9695505050505050565b6000602082019050818103600083015262000dcf8162000ac3565b9050919050565b6000602082019050818103600083015262000df18162000b2b565b9050919050565b6000602082019050818103600083015262000e138162000b6d565b9050919050565b6000602082019050818103600083015262000e358162000bd5565b9050919050565b6000602082019050818103600083015262000e578162000c17565b9050919050565b6000602082019050818103600083015262000e798162000c7f565b9050919050565b6000602082019050818103600083015262000e9b8162000cc1565b9050919050565b600082825260208201905092915050565b600062000ec08262000edb565b9050919050565b600062000ed48262000edb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b62000f108162000eb3565b811462000f1c57600080fd5b50565b62000f2a8162000ec7565b811462000f3657600080fd5b50565b62000f448162000efb565b811462000f5057600080fd5b50565b613ebe8062000f636000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637ceab3b11161010f578063d4b83992116100a2578063e19a9dd911610071578063e19a9dd914610582578063ebb2b4a21461059e578063ee072baf146105ba578063f2fde38b146105d6576101e5565b8063d4b839921461050c578063dcafac091461052a578063de8dd91d14610548578063e009cfde14610566576101e5565b8063b19d4758116100de578063b19d475814610495578063c66323e51461049f578063c9106389146104bd578063cc2f8452146104db576101e5565b80637ceab3b1146104215780638da5cb5b1461043f5780639b56d5be1461045d578063a4f9edbf14610479576101e5565b806346ba230711610187578063610b592511610156578063610b5925146103af5780636b0a4cf6146103cb578063715018a6146103fb578063776d1a0114610405576101e5565b806346ba2307146103265780635229073f146103425780635aef7de614610373578063605df59c14610391576101e5565b8063300c661f116101c3578063300c661f146102665780633aa7690614610296578063427e232f146102c6578063468721a7146102f6576101e5565b8063086cfca8146101ea578063258148cc146102065780632d9ad53d14610236575b600080fd5b61020460048036038101906101ff9190612b58565b6105f2565b005b610220600480360381019061021b9190612dd5565b610734565b60405161022d9190613a47565b60405180910390f35b610250600480360381019061024b9190612b58565b61074c565b60405161025d919061373d565b60405180910390f35b610280600480360381019061027b9190612cf0565b61081e565b60405161028d9190613788565b60405180910390f35b6102b060048036038101906102ab9190612dd5565b610857565b6040516102bd9190613a47565b60405180910390f35b6102e060048036038101906102db9190612dd5565b610874565b6040516102ed9190613788565b60405180910390f35b610310600480360381019061030b9190612c70565b61088c565b60405161031d919061373d565b60405180910390f35b610340600480360381019061033b9190612dd5565b610a5c565b005b61035c60048036038101906103579190612c70565b610b6b565b60405161036a929190613758565b60405180910390f35b61037b610c48565b604051610388919061359f565b60405180910390f35b610399610c6e565b6040516103a69190613a47565b60405180910390f35b6103c960048036038101906103c49190612b58565b610c74565b005b6103e560048036038101906103e09190612dd5565b610ffe565b6040516103f29190613788565b60405180910390f35b61040361101b565b005b61041f600480360381019061041a9190612b58565b6110a3565b005b6104296111e5565b604051610436919061359f565b60405180910390f35b61044761120b565b604051610454919061359f565b60405180910390f35b61047760048036038101906104729190612dd5565b611235565b005b610493600480360381019061048e9190612d94565b61130a565b005b61049d61158c565b005b6104a7611601565b6040516104b49190613a47565b60405180910390f35b6104c5611607565b6040516104d2919061359f565b60405180910390f35b6104f560048036038101906104f09190612c34565b611631565b60405161050392919061370d565b60405180910390f35b61051461187e565b604051610521919061359f565b60405180910390f35b6105326118a4565b60405161053f9190613a47565b60405180910390f35b6105506118aa565b60405161055d9190613a47565b60405180910390f35b610580600480360381019061057b9190612bf8565b6118b0565b005b61059c60048036038101906105979190612b58565b611c39565b005b6105b860048036038101906105b39190612dd5565b611e6f565b005b6105d460048036038101906105cf9190612c70565b611ef5565b005b6105f060048036038101906105eb9190612b58565b612171565b005b6105fa612269565b73ffffffffffffffffffffffffffffffffffffffff1661061861120b565b73ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906138c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606e6020528060005260406000206000915090505481565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156108175750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000848484846040516020016108379493929190613555565b604051602081830303815290604052805190602001209050949350505050565b6000606e6000838152602001908152602001600020549050919050565b606d6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613947565b60405180910390fd5b6109ac868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561081e565b606d6000606c5481526020019081526020016000208190555042606e6000606c54815260200190815260200160002081905550606d6000606c54815260200190815260200160002054606c547f4c8a9c748e976c17c2eb2c2bc50da76eac9cd90ff529f0fe900e0c10a179f0318888888888604051610a2f9594939291906135ba565b60405180910390a3606c6000815480929190610a4a90613cc7565b91905055506001905095945050505050565b610a64612269565b73ffffffffffffffffffffffffffffffffffffffff16610a8261120b565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906138c7565b60405180910390fd5b606b548111610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906138a7565b60405180910390fd5b606c54811115610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906138e7565b60405180910390fd5b80606b8190555050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613947565b60405180910390fd5b9550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a5481565b610c7c612269565b73ffffffffffffffffffffffffffffffffffffffff16610c9a61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610d5a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613a07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e906139a7565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051610ff3919061359f565b60405180910390a150565b6000606d6000838152602001908152602001600020549050919050565b611023612269565b73ffffffffffffffffffffffffffffffffffffffff1661104161120b565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e906138c7565b60405180910390fd5b6110a16000612271565b565b6110ab612269565b73ffffffffffffffffffffffffffffffffffffffff166110c961120b565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611116906138c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61123d612269565b73ffffffffffffffffffffffffffffffffffffffff1661125b61120b565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906138c7565b60405180910390fd5b60008114806112c15750603c8110155b611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790613907565b60405180910390fd5b80606a8190555050565b6000806000806000858060200190518101906113269190612b81565b94509450945094509450611338612337565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90613927565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613867565b60405180910390fd5b60008114806114285750603c8110155b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613907565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555061150085612171565b611508612420565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae503008660405161157c919061359f565b60405180910390a4505050505050565b5b6000606a54141580156115ce575042606a54606954606e6000606b548152602001908152602001600020546115c29190613b34565b6115cc9190613b34565b105b80156115dd5750606c54606b54105b156115ff57606b60008154809291906115f590613cc7565b919050555061158d565b565b606b5481565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff811115611675577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116a35781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117765750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561178157508482105b1561186f57808483815181106117c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061186790613cc7565b92505061170c565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60695481565b606c5481565b6118b8612269565b73ffffffffffffffffffffffffffffffffffffffff166118d661120b565b73ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156119965750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613a07565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906137e7565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051611c2d919061359f565b60405180910390a15050565b611c41612269565b73ffffffffffffffffffffffffffffffffffffffff16611c5f61120b565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611dd2578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d4291906137cc565b60206040518083038186803b158015611d5a57600080fd5b505afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190612d6b565b611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613967565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611e64919061359f565b60405180910390a150565b611e77612269565b73ffffffffffffffffffffffffffffffffffffffff16611e9561120b565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906138c7565b60405180910390fd5b8060698190555050565b606c54606b5410611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f32906139e7565b60405180910390fd5b606954606e6000606b5481526020019081526020016000205442611f5f9190613b8a565b1015611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613987565b60405180910390fd5b6000606a541461201d5742606a54606954606e6000606b54815260200190815260200160002054611fd19190613b34565b611fdb9190613b34565b101561201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613827565b60405180910390fd5b5b61206d858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508461081e565b606d6000606b54815260200190815260200160002054146120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90613847565b60405180910390fd5b606b60008154809291906120d690613cc7565b919050555061212b858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084612571565b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613a27565b60405180910390fd5b5050505050565b612179612269565b73ffffffffffffffffffffffffffffffffffffffff1661219761120b565b73ffffffffffffffffffffffffffffffffffffffff16146121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e4906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490613807565b60405180910390fd5b61226681612271565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff168061235d575060008054906101000a900460ff16155b61239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156123ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6123f4612866565b6123fc61293f565b801561241d5760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906139c7565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a357606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016126709b9a99989796959493929190613654565b600060405180830381600087803b15801561268a57600080fd5b505af115801561269e573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016127049493929190613608565b602060405180830381600087803b15801561271e57600080fd5b505af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612d6b565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461285e57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161282b9291906137a3565b600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b505050505b949350505050565b600060019054906101000a900460ff168061288c575060008054906101000a900460ff16155b6128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290613887565b60405180910390fd5b60008060019054906101000a900460ff16159050801561291b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561293c5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612965575060008054906101000a900460ff16155b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156129f4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612a046129ff612269565b612271565b8015612a255760008060016101000a81548160ff0219169083151502179055505b50565b6000612a3b612a3684613a93565b613a62565b905082815260208101848484011115612a5357600080fd5b612a5e848285613c85565b509392505050565b600081359050612a7581613e1c565b92915050565b600081519050612a8a81613e33565b92915050565b600081519050612a9f81613e4a565b92915050565b60008083601f840112612ab757600080fd5b8235905067ffffffffffffffff811115612ad057600080fd5b602083019150836001820283011115612ae857600080fd5b9250929050565b600082601f830112612b0057600080fd5b8135612b10848260208601612a28565b91505092915050565b600081359050612b2881613e61565b92915050565b600081359050612b3d81613e71565b92915050565b600081519050612b5281613e71565b92915050565b600060208284031215612b6a57600080fd5b6000612b7884828501612a66565b91505092915050565b600080600080600060a08688031215612b9957600080fd5b6000612ba788828901612a7b565b9550506020612bb888828901612a7b565b9450506040612bc988828901612a7b565b9350506060612bda88828901612b43565b9250506080612beb88828901612b43565b9150509295509295909350565b60008060408385031215612c0b57600080fd5b6000612c1985828601612a66565b9250506020612c2a85828601612a66565b9150509250929050565b60008060408385031215612c4757600080fd5b6000612c5585828601612a66565b9250506020612c6685828601612b2e565b9150509250929050565b600080600080600060808688031215612c8857600080fd5b6000612c9688828901612a66565b9550506020612ca788828901612b2e565b945050604086013567ffffffffffffffff811115612cc457600080fd5b612cd088828901612aa5565b93509350506060612ce388828901612b19565b9150509295509295909350565b60008060008060808587031215612d0657600080fd5b6000612d1487828801612a66565b9450506020612d2587828801612b2e565b935050604085013567ffffffffffffffff811115612d4257600080fd5b612d4e87828801612aef565b9250506060612d5f87828801612b19565b91505092959194509250565b600060208284031215612d7d57600080fd5b6000612d8b84828501612a90565b91505092915050565b600060208284031215612da657600080fd5b600082013567ffffffffffffffff811115612dc057600080fd5b612dcc84828501612aef565b91505092915050565b600060208284031215612de757600080fd5b6000612df584828501612b2e565b91505092915050565b6000612e0a8383612e25565b60208301905092915050565b612e1f81613bd0565b82525050565b612e2e81613bbe565b82525050565b612e3d81613bbe565b82525050565b612e54612e4f82613bbe565b613d10565b82525050565b6000612e6582613ad3565b612e6f8185613af6565b9350612e7a83613ac3565b8060005b83811015612eab578151612e928882612dfe565b9750612e9d83613ae9565b925050600181019050612e7e565b5085935050505092915050565b612ec181613be2565b82525050565b612ed081613bee565b82525050565b612edf81613bf8565b82525050565b6000612ef18385613b07565b9350612efe838584613c85565b612f0783613ddd565b840190509392505050565b6000612f1d82613ade565b612f278185613b07565b9350612f37818560208601613c94565b612f4081613ddd565b840191505092915050565b6000612f5682613ade565b612f608185613b18565b9350612f70818560208601613c94565b80840191505092915050565b612f8581613c61565b82525050565b612f9c612f9782613c61565b613d3e565b82525050565b612fab81613c73565b82525050565b6000612fbe601783613b23565b91507f4d6f64756c6520616c72656164792064697361626c65640000000000000000006000830152602082019050919050565b6000612ffe602683613b23565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613064601383613b23565b91507f5472616e73616374696f6e2065787069726564000000000000000000000000006000830152602082019050919050565b60006130a4601f83613b23565b91507f5472616e73616374696f6e2068617368657320646f206e6f74206d61746368006000830152602082019050919050565b60006130e4601e83613b23565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613124602e83613b23565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061318a602d83613b23565b91507f4e6577206e6f6e6365206d75737420626520686967686572207468616e20637560008301527f7272656e742074784e6f6e6365000000000000000000000000000000000000006020830152604082019050919050565b60006131f0602083613b23565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613230602083613b23565b91507f43616e6e6f7420626520686967686572207468616e2071756575654e6f6e63656000830152602082019050919050565b6000613270602d83613b23565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b60006132d6601e83613b23565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613316601583613b23565b91507f4d6f64756c65206e6f7420617574686f72697a656400000000000000000000006000830152602082019050919050565b6000613356602083613b23565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000613396602083613b23565b91507f5472616e73616374696f6e206973207374696c6c20696e20636f6f6c646f776e6000830152602082019050919050565b60006133d6601683613b23565b91507f4d6f64756c6520616c726561647920656e61626c6564000000000000000000006000830152602082019050919050565b6000613416602483613b23565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061347c601a83613b23565b91507f5472616e73616374696f6e20717565756520697320656d7074790000000000006000830152602082019050919050565b60006134bc600e83613b23565b91507f496e76616c6964206d6f64756c650000000000000000000000000000000000006000830152602082019050919050565b60006134fc601983613b23565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b61353881613c57565b82525050565b61354f61354a82613c57565b613d34565b82525050565b60006135618287612e43565b601482019150613571828661353e565b6020820191506135818285612f4b565b915061358d8284612f8b565b60018201915081905095945050505050565b60006020820190506135b46000830184612e34565b92915050565b60006080820190506135cf6000830188612e34565b6135dc602083018761352f565b81810360408301526135ef818587612ee5565b90506135fe6060830184612f7c565b9695505050505050565b600060808201905061361d6000830187612e34565b61362a602083018661352f565b818103604083015261363c8185612f12565b905061364b6060830184612f7c565b95945050505050565b60006101608201905061366a600083018e612e34565b613677602083018d61352f565b8181036040830152613689818c612f12565b9050613698606083018b612f7c565b6136a5608083018a612fa2565b6136b260a0830189612fa2565b6136bf60c0830188612fa2565b6136cc60e0830187612e34565b6136da610100830186612e16565b8181036101208301526136ed8185612f12565b90506136fd610140830184612e34565b9c9b505050505050505050505050565b600060408201905081810360008301526137278185612e5a565b90506137366020830184612e34565b9392505050565b60006020820190506137526000830184612eb8565b92915050565b600060408201905061376d6000830185612eb8565b818103602083015261377f8184612f12565b90509392505050565b600060208201905061379d6000830184612ec7565b92915050565b60006040820190506137b86000830185612ec7565b6137c56020830184612eb8565b9392505050565b60006020820190506137e16000830184612ed6565b92915050565b6000602082019050818103600083015261380081612fb1565b9050919050565b6000602082019050818103600083015261382081612ff1565b9050919050565b6000602082019050818103600083015261384081613057565b9050919050565b6000602082019050818103600083015261386081613097565b9050919050565b60006020820190508181036000830152613880816130d7565b9050919050565b600060208201905081810360008301526138a081613117565b9050919050565b600060208201905081810360008301526138c08161317d565b9050919050565b600060208201905081810360008301526138e0816131e3565b9050919050565b6000602082019050818103600083015261390081613223565b9050919050565b6000602082019050818103600083015261392081613263565b9050919050565b60006020820190508181036000830152613940816132c9565b9050919050565b6000602082019050818103600083015261396081613309565b9050919050565b6000602082019050818103600083015261398081613349565b9050919050565b600060208201905081810360008301526139a081613389565b9050919050565b600060208201905081810360008301526139c0816133c9565b9050919050565b600060208201905081810360008301526139e081613409565b9050919050565b60006020820190508181036000830152613a008161346f565b9050919050565b60006020820190508181036000830152613a20816134af565b9050919050565b60006020820190508181036000830152613a40816134ef565b9050919050565b6000602082019050613a5c600083018461352f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613a8957613a88613dae565b5b8060405250919050565b600067ffffffffffffffff821115613aae57613aad613dae565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613b3f82613c57565b9150613b4a83613c57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b7f57613b7e613d50565b5b828201905092915050565b6000613b9582613c57565b9150613ba083613c57565b925082821015613bb357613bb2613d50565b5b828203905092915050565b6000613bc982613c37565b9050919050565b6000613bdb82613c37565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050613c3282613e08565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c6c82613c24565b9050919050565b6000613c7e82613c57565b9050919050565b82818337600083830152505050565b60005b83811015613cb2578082015181840152602081019050613c97565b83811115613cc1576000848401525b50505050565b6000613cd282613c57565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0557613d04613d50565b5b600182019050919050565b6000613d1b82613d22565b9050919050565b6000613d2d82613dfb565b9050919050565b6000819050919050565b6000613d4982613dee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60028110613e1957613e18613d7f565b5b50565b613e2581613bbe565b8114613e3057600080fd5b50565b613e3c81613bd0565b8114613e4757600080fd5b50565b613e5381613be2565b8114613e5e57600080fd5b50565b60028110613e6e57600080fd5b50565b613e7a81613c57565b8114613e8557600080fd5b5056fea26469706673582212206f4de68ccc61e36655459f9fb9c07003c20f8e19b2a434ed1a757de2d8dc3f8e64736f6c63430008000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637ceab3b11161010f578063d4b83992116100a2578063e19a9dd911610071578063e19a9dd914610582578063ebb2b4a21461059e578063ee072baf146105ba578063f2fde38b146105d6576101e5565b8063d4b839921461050c578063dcafac091461052a578063de8dd91d14610548578063e009cfde14610566576101e5565b8063b19d4758116100de578063b19d475814610495578063c66323e51461049f578063c9106389146104bd578063cc2f8452146104db576101e5565b80637ceab3b1146104215780638da5cb5b1461043f5780639b56d5be1461045d578063a4f9edbf14610479576101e5565b806346ba230711610187578063610b592511610156578063610b5925146103af5780636b0a4cf6146103cb578063715018a6146103fb578063776d1a0114610405576101e5565b806346ba2307146103265780635229073f146103425780635aef7de614610373578063605df59c14610391576101e5565b8063300c661f116101c3578063300c661f146102665780633aa7690614610296578063427e232f146102c6578063468721a7146102f6576101e5565b8063086cfca8146101ea578063258148cc146102065780632d9ad53d14610236575b600080fd5b61020460048036038101906101ff9190612b58565b6105f2565b005b610220600480360381019061021b9190612dd5565b610734565b60405161022d9190613a47565b60405180910390f35b610250600480360381019061024b9190612b58565b61074c565b60405161025d919061373d565b60405180910390f35b610280600480360381019061027b9190612cf0565b61081e565b60405161028d9190613788565b60405180910390f35b6102b060048036038101906102ab9190612dd5565b610857565b6040516102bd9190613a47565b60405180910390f35b6102e060048036038101906102db9190612dd5565b610874565b6040516102ed9190613788565b60405180910390f35b610310600480360381019061030b9190612c70565b61088c565b60405161031d919061373d565b60405180910390f35b610340600480360381019061033b9190612dd5565b610a5c565b005b61035c60048036038101906103579190612c70565b610b6b565b60405161036a929190613758565b60405180910390f35b61037b610c48565b604051610388919061359f565b60405180910390f35b610399610c6e565b6040516103a69190613a47565b60405180910390f35b6103c960048036038101906103c49190612b58565b610c74565b005b6103e560048036038101906103e09190612dd5565b610ffe565b6040516103f29190613788565b60405180910390f35b61040361101b565b005b61041f600480360381019061041a9190612b58565b6110a3565b005b6104296111e5565b604051610436919061359f565b60405180910390f35b61044761120b565b604051610454919061359f565b60405180910390f35b61047760048036038101906104729190612dd5565b611235565b005b610493600480360381019061048e9190612d94565b61130a565b005b61049d61158c565b005b6104a7611601565b6040516104b49190613a47565b60405180910390f35b6104c5611607565b6040516104d2919061359f565b60405180910390f35b6104f560048036038101906104f09190612c34565b611631565b60405161050392919061370d565b60405180910390f35b61051461187e565b604051610521919061359f565b60405180910390f35b6105326118a4565b60405161053f9190613a47565b60405180910390f35b6105506118aa565b60405161055d9190613a47565b60405180910390f35b610580600480360381019061057b9190612bf8565b6118b0565b005b61059c60048036038101906105979190612b58565b611c39565b005b6105b860048036038101906105b39190612dd5565b611e6f565b005b6105d460048036038101906105cf9190612c70565b611ef5565b005b6105f060048036038101906105eb9190612b58565b612171565b005b6105fa612269565b73ffffffffffffffffffffffffffffffffffffffff1661061861120b565b73ffffffffffffffffffffffffffffffffffffffff161461066e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610665906138c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b606e6020528060005260406000206000915090505481565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156108175750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000848484846040516020016108379493929190613555565b604051602081830303815290604052805190602001209050949350505050565b6000606e6000838152602001908152602001600020549050919050565b606d6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390613947565b60405180910390fd5b6109ac868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561081e565b606d6000606c5481526020019081526020016000208190555042606e6000606c54815260200190815260200160002081905550606d6000606c54815260200190815260200160002054606c547f4c8a9c748e976c17c2eb2c2bc50da76eac9cd90ff529f0fe900e0c10a179f0318888888888604051610a2f9594939291906135ba565b60405180910390a3606c6000815480929190610a4a90613cc7565b91905055506001905095945050505050565b610a64612269565b73ffffffffffffffffffffffffffffffffffffffff16610a8261120b565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906138c7565b60405180910390fd5b606b548111610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906138a7565b60405180910390fd5b606c54811115610b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58906138e7565b60405180910390fd5b80606b8190555050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590613947565b60405180910390fd5b9550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a5481565b610c7c612269565b73ffffffffffffffffffffffffffffffffffffffff16610c9a61120b565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce7906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015610d5a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613a07565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e906139a7565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051610ff3919061359f565b60405180910390a150565b6000606d6000838152602001908152602001600020549050919050565b611023612269565b73ffffffffffffffffffffffffffffffffffffffff1661104161120b565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e906138c7565b60405180910390fd5b6110a16000612271565b565b6110ab612269565b73ffffffffffffffffffffffffffffffffffffffff166110c961120b565b73ffffffffffffffffffffffffffffffffffffffff161461111f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611116906138c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61123d612269565b73ffffffffffffffffffffffffffffffffffffffff1661125b61120b565b73ffffffffffffffffffffffffffffffffffffffff16146112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906138c7565b60405180910390fd5b60008114806112c15750603c8110155b611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790613907565b60405180910390fd5b80606a8190555050565b6000806000806000858060200190518101906113269190612b81565b94509450945094509450611338612337565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f90613927565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90613867565b60405180910390fd5b60008114806114285750603c8110155b611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90613907565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606a819055508160698190555061150085612171565b611508612420565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffd805e12a6d02f83d7029c03fdfcf3f226ebcd409af51b3095237015eae503008660405161157c919061359f565b60405180910390a4505050505050565b5b6000606a54141580156115ce575042606a54606954606e6000606b548152602001908152602001600020546115c29190613b34565b6115cc9190613b34565b105b80156115dd5750606c54606b54105b156115ff57606b60008154809291906115f590613cc7565b919050555061158d565b565b606b5481565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff811115611675577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116a35781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156117765750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561178157508482105b1561186f57808483815181106117c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061186790613cc7565b92505061170c565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60695481565b606c5481565b6118b8612269565b73ffffffffffffffffffffffffffffffffffffffff166118d661120b565b73ffffffffffffffffffffffffffffffffffffffff161461192c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611923906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156119965750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613a07565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906137e7565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051611c2d919061359f565b60405180910390a15050565b611c41612269565b73ffffffffffffffffffffffffffffffffffffffff16611c5f61120b565b73ffffffffffffffffffffffffffffffffffffffff1614611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611dd2578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401611d4291906137cc565b60206040518083038186803b158015611d5a57600080fd5b505afa158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d929190612d6b565b611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890613967565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611e64919061359f565b60405180910390a150565b611e77612269565b73ffffffffffffffffffffffffffffffffffffffff16611e9561120b565b73ffffffffffffffffffffffffffffffffffffffff1614611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906138c7565b60405180910390fd5b8060698190555050565b606c54606b5410611f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f32906139e7565b60405180910390fd5b606954606e6000606b5481526020019081526020016000205442611f5f9190613b8a565b1015611fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9790613987565b60405180910390fd5b6000606a541461201d5742606a54606954606e6000606b54815260200190815260200160002054611fd19190613b34565b611fdb9190613b34565b101561201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201390613827565b60405180910390fd5b5b61206d858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508461081e565b606d6000606b54815260200190815260200160002054146120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90613847565b60405180910390fd5b606b60008154809291906120d690613cc7565b919050555061212b858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505084612571565b61216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613a27565b60405180910390fd5b5050505050565b612179612269565b73ffffffffffffffffffffffffffffffffffffffff1661219761120b565b73ffffffffffffffffffffffffffffffffffffffff16146121ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e4906138c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561225d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225490613807565b60405180910390fd5b61226681612271565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff168061235d575060008054906101000a900460ff16155b61239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239390613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156123ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6123f4612866565b6123fc61293f565b801561241d5760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906139c7565b60405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a357606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016126709b9a99989796959493929190613654565b600060405180830381600087803b15801561268a57600080fd5b505af115801561269e573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016127049493929190613608565b602060405180830381600087803b15801561271e57600080fd5b505af1158015612732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127569190612d6b565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461285e57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161282b9291906137a3565b600060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b505050505b949350505050565b600060019054906101000a900460ff168061288c575060008054906101000a900460ff16155b6128cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c290613887565b60405180910390fd5b60008060019054906101000a900460ff16159050801561291b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801561293c5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680612965575060008054906101000a900460ff16155b6129a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299b90613887565b60405180910390fd5b60008060019054906101000a900460ff1615905080156129f4576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b612a046129ff612269565b612271565b8015612a255760008060016101000a81548160ff0219169083151502179055505b50565b6000612a3b612a3684613a93565b613a62565b905082815260208101848484011115612a5357600080fd5b612a5e848285613c85565b509392505050565b600081359050612a7581613e1c565b92915050565b600081519050612a8a81613e33565b92915050565b600081519050612a9f81613e4a565b92915050565b60008083601f840112612ab757600080fd5b8235905067ffffffffffffffff811115612ad057600080fd5b602083019150836001820283011115612ae857600080fd5b9250929050565b600082601f830112612b0057600080fd5b8135612b10848260208601612a28565b91505092915050565b600081359050612b2881613e61565b92915050565b600081359050612b3d81613e71565b92915050565b600081519050612b5281613e71565b92915050565b600060208284031215612b6a57600080fd5b6000612b7884828501612a66565b91505092915050565b600080600080600060a08688031215612b9957600080fd5b6000612ba788828901612a7b565b9550506020612bb888828901612a7b565b9450506040612bc988828901612a7b565b9350506060612bda88828901612b43565b9250506080612beb88828901612b43565b9150509295509295909350565b60008060408385031215612c0b57600080fd5b6000612c1985828601612a66565b9250506020612c2a85828601612a66565b9150509250929050565b60008060408385031215612c4757600080fd5b6000612c5585828601612a66565b9250506020612c6685828601612b2e565b9150509250929050565b600080600080600060808688031215612c8857600080fd5b6000612c9688828901612a66565b9550506020612ca788828901612b2e565b945050604086013567ffffffffffffffff811115612cc457600080fd5b612cd088828901612aa5565b93509350506060612ce388828901612b19565b9150509295509295909350565b60008060008060808587031215612d0657600080fd5b6000612d1487828801612a66565b9450506020612d2587828801612b2e565b935050604085013567ffffffffffffffff811115612d4257600080fd5b612d4e87828801612aef565b9250506060612d5f87828801612b19565b91505092959194509250565b600060208284031215612d7d57600080fd5b6000612d8b84828501612a90565b91505092915050565b600060208284031215612da657600080fd5b600082013567ffffffffffffffff811115612dc057600080fd5b612dcc84828501612aef565b91505092915050565b600060208284031215612de757600080fd5b6000612df584828501612b2e565b91505092915050565b6000612e0a8383612e25565b60208301905092915050565b612e1f81613bd0565b82525050565b612e2e81613bbe565b82525050565b612e3d81613bbe565b82525050565b612e54612e4f82613bbe565b613d10565b82525050565b6000612e6582613ad3565b612e6f8185613af6565b9350612e7a83613ac3565b8060005b83811015612eab578151612e928882612dfe565b9750612e9d83613ae9565b925050600181019050612e7e565b5085935050505092915050565b612ec181613be2565b82525050565b612ed081613bee565b82525050565b612edf81613bf8565b82525050565b6000612ef18385613b07565b9350612efe838584613c85565b612f0783613ddd565b840190509392505050565b6000612f1d82613ade565b612f278185613b07565b9350612f37818560208601613c94565b612f4081613ddd565b840191505092915050565b6000612f5682613ade565b612f608185613b18565b9350612f70818560208601613c94565b80840191505092915050565b612f8581613c61565b82525050565b612f9c612f9782613c61565b613d3e565b82525050565b612fab81613c73565b82525050565b6000612fbe601783613b23565b91507f4d6f64756c6520616c72656164792064697361626c65640000000000000000006000830152602082019050919050565b6000612ffe602683613b23565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613064601383613b23565b91507f5472616e73616374696f6e2065787069726564000000000000000000000000006000830152602082019050919050565b60006130a4601f83613b23565b91507f5472616e73616374696f6e2068617368657320646f206e6f74206d61746368006000830152602082019050919050565b60006130e4601e83613b23565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613124602e83613b23565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061318a602d83613b23565b91507f4e6577206e6f6e6365206d75737420626520686967686572207468616e20637560008301527f7272656e742074784e6f6e6365000000000000000000000000000000000000006020830152604082019050919050565b60006131f0602083613b23565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613230602083613b23565b91507f43616e6e6f7420626520686967686572207468616e2071756575654e6f6e63656000830152602082019050919050565b6000613270602d83613b23565b91507f457870697261746974696f6e206d7573742062652030206f72206174206c656160008301527f7374203630207365636f6e6473000000000000000000000000000000000000006020830152604082019050919050565b60006132d6601e83613b23565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000613316601583613b23565b91507f4d6f64756c65206e6f7420617574686f72697a656400000000000000000000006000830152602082019050919050565b6000613356602083613b23565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000613396602083613b23565b91507f5472616e73616374696f6e206973207374696c6c20696e20636f6f6c646f776e6000830152602082019050919050565b60006133d6601683613b23565b91507f4d6f64756c6520616c726561647920656e61626c6564000000000000000000006000830152602082019050919050565b6000613416602483613b23565b91507f73657455704d6f64756c65732068617320616c7265616479206265656e20636160008301527f6c6c6564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061347c601a83613b23565b91507f5472616e73616374696f6e20717565756520697320656d7074790000000000006000830152602082019050919050565b60006134bc600e83613b23565b91507f496e76616c6964206d6f64756c650000000000000000000000000000000000006000830152602082019050919050565b60006134fc601983613b23565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b61353881613c57565b82525050565b61354f61354a82613c57565b613d34565b82525050565b60006135618287612e43565b601482019150613571828661353e565b6020820191506135818285612f4b565b915061358d8284612f8b565b60018201915081905095945050505050565b60006020820190506135b46000830184612e34565b92915050565b60006080820190506135cf6000830188612e34565b6135dc602083018761352f565b81810360408301526135ef818587612ee5565b90506135fe6060830184612f7c565b9695505050505050565b600060808201905061361d6000830187612e34565b61362a602083018661352f565b818103604083015261363c8185612f12565b905061364b6060830184612f7c565b95945050505050565b60006101608201905061366a600083018e612e34565b613677602083018d61352f565b8181036040830152613689818c612f12565b9050613698606083018b612f7c565b6136a5608083018a612fa2565b6136b260a0830189612fa2565b6136bf60c0830188612fa2565b6136cc60e0830187612e34565b6136da610100830186612e16565b8181036101208301526136ed8185612f12565b90506136fd610140830184612e34565b9c9b505050505050505050505050565b600060408201905081810360008301526137278185612e5a565b90506137366020830184612e34565b9392505050565b60006020820190506137526000830184612eb8565b92915050565b600060408201905061376d6000830185612eb8565b818103602083015261377f8184612f12565b90509392505050565b600060208201905061379d6000830184612ec7565b92915050565b60006040820190506137b86000830185612ec7565b6137c56020830184612eb8565b9392505050565b60006020820190506137e16000830184612ed6565b92915050565b6000602082019050818103600083015261380081612fb1565b9050919050565b6000602082019050818103600083015261382081612ff1565b9050919050565b6000602082019050818103600083015261384081613057565b9050919050565b6000602082019050818103600083015261386081613097565b9050919050565b60006020820190508181036000830152613880816130d7565b9050919050565b600060208201905081810360008301526138a081613117565b9050919050565b600060208201905081810360008301526138c08161317d565b9050919050565b600060208201905081810360008301526138e0816131e3565b9050919050565b6000602082019050818103600083015261390081613223565b9050919050565b6000602082019050818103600083015261392081613263565b9050919050565b60006020820190508181036000830152613940816132c9565b9050919050565b6000602082019050818103600083015261396081613309565b9050919050565b6000602082019050818103600083015261398081613349565b9050919050565b600060208201905081810360008301526139a081613389565b9050919050565b600060208201905081810360008301526139c0816133c9565b9050919050565b600060208201905081810360008301526139e081613409565b9050919050565b60006020820190508181036000830152613a008161346f565b9050919050565b60006020820190508181036000830152613a20816134af565b9050919050565b60006020820190508181036000830152613a40816134ef565b9050919050565b6000602082019050613a5c600083018461352f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613a8957613a88613dae565b5b8060405250919050565b600067ffffffffffffffff821115613aae57613aad613dae565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613b3f82613c57565b9150613b4a83613c57565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b7f57613b7e613d50565b5b828201905092915050565b6000613b9582613c57565b9150613ba083613c57565b925082821015613bb357613bb2613d50565b5b828203905092915050565b6000613bc982613c37565b9050919050565b6000613bdb82613c37565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050613c3282613e08565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c6c82613c24565b9050919050565b6000613c7e82613c57565b9050919050565b82818337600083830152505050565b60005b83811015613cb2578082015181840152602081019050613c97565b83811115613cc1576000848401525b50505050565b6000613cd282613c57565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613d0557613d04613d50565b5b600182019050919050565b6000613d1b82613d22565b9050919050565b6000613d2d82613dfb565b9050919050565b6000819050919050565b6000613d4982613dee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160601b9050919050565b60028110613e1957613e18613d7f565b5b50565b613e2581613bbe565b8114613e3057600080fd5b50565b613e3c81613bd0565b8114613e4757600080fd5b50565b613e5381613be2565b8114613e5e57600080fd5b50565b60028110613e6e57600080fd5b50565b613e7a81613c57565b8114613e8557600080fd5b5056fea26469706673582212206f4de68ccc61e36655459f9fb9c07003c20f8e19b2a434ed1a757de2d8dc3f8e64736f6c63430008000033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/Exit.json b/packages/app/src/contracts/Exit.json deleted file mode 100644 index 5461cd1f..00000000 --- a/packages/app/src/contracts/Exit.json +++ /dev/null @@ -1,409 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Exit", - "sourceName": "contracts/ExitModule.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "address", - "name": "_designatedToken", - "type": "address" - }, - { - "internalType": "address", - "name": "_circulatingSupply", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - } - ], - "name": "ExitModuleSetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "leaver", - "type": "address" - } - ], - "name": "ExitSuccessful", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "tokens", - "type": "address[]" - } - ], - "name": "addToDenylist", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "circulatingSupply", - "outputs": [ - { - "internalType": "contract CirculatingSupply", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "deniedTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "designatedToken", - "outputs": [ - { - "internalType": "contract ERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amountToRedeem", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "tokens", - "type": "address[]" - } - ], - "name": "exit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getCirculatingSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "tokens", - "type": "address[]" - } - ], - "name": "removeFromDenylist", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_circulatingSupply", - "type": "address" - } - ], - "name": "setCirculatingSupply", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "setDesignatedToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162003e6038038062003e608339818101604052810190620000379190620008b8565b600085858585856040516020016200005495949392919062000a14565b604051602081830303815290604052905062000076816200008260201b60201c565b50505050505062000cc6565b600080600080600085806020019051810190620000a0919062000830565b94509450945094509450620000ba6200031760201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200012d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001249062000af9565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620001e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001d89062000a93565b60405180910390fd5b82606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002b5856200041660201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f98b6e848bcb9ab7cb2c546075f85f11bb4e96cbcbcb49aab03e65f45c33c621360405160405180910390a3505050505050565b600060019054906101000a900460ff16806200033e575060008054906101000a900460ff16155b62000380576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003779062000ab5565b60405180910390fd5b60008060019054906101000a900460ff161590508015620003d1576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620003e16200052c60201b60201c565b620003f16200060b60201b60201c565b8015620004135760008060016101000a81548160ff0219169083151502179055505b50565b620004266200070a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200044c6200071260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200049c9062000ad7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000518576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200050f9062000a71565b60405180910390fd5b62000529816200073c60201b60201c565b50565b600060019054906101000a900460ff168062000553575060008054906101000a900460ff16155b62000595576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200058c9062000ab5565b60405180910390fd5b60008060019054906101000a900460ff161590508015620005e6576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620006085760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000632575060008054906101000a900460ff16155b62000674576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066b9062000ab5565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006c5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620006e5620006d96200070a60201b60201c565b6200073c60201b60201c565b8015620007075760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620008138162000c92565b92915050565b6000815190506200082a8162000cac565b92915050565b600080600080600060a086880312156200084f576200084e62000b74565b5b60006200085f8882890162000819565b9550506020620008728882890162000819565b9450506040620008858882890162000819565b9350506060620008988882890162000819565b9250506080620008ab8882890162000819565b9150509295509295909350565b600080600080600060a08688031215620008d757620008d662000b74565b5b6000620008e78882890162000802565b9550506020620008fa8882890162000802565b94505060406200090d8882890162000802565b9350506060620009208882890162000802565b9250506080620009338882890162000802565b9150509295509295909350565b6200094b8162000b2c565b82525050565b60006200096060268362000b1b565b91506200096d8262000b79565b604082019050919050565b600062000987601e8362000b1b565b9150620009948262000bc8565b602082019050919050565b6000620009ae602e8362000b1b565b9150620009bb8262000bf1565b604082019050919050565b6000620009d560208362000b1b565b9150620009e28262000c40565b602082019050919050565b6000620009fc601e8362000b1b565b915062000a098262000c69565b602082019050919050565b600060a08201905062000a2b600083018862000940565b62000a3a602083018762000940565b62000a49604083018662000940565b62000a58606083018562000940565b62000a67608083018462000940565b9695505050505050565b6000602082019050818103600083015262000a8c8162000951565b9050919050565b6000602082019050818103600083015262000aae8162000978565b9050919050565b6000602082019050818103600083015262000ad0816200099f565b9050919050565b6000602082019050818103600083015262000af281620009c6565b9050919050565b6000602082019050818103600083015262000b1481620009ed565b9050919050565b600082825260208201905092915050565b600062000b398262000b54565b9050919050565b600062000b4d8262000b54565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b62000c9d8162000b2c565b811462000ca957600080fd5b50565b62000cb78162000b40565b811462000cc357600080fd5b50565b61318a8062000cd66000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c910638911610071578063c9106389146102e3578063d4b8399214610301578063e19a9dd91461031f578063ef9688041461033b578063f2fde38b146103575761012c565b80638da5cb5b1461023f5780639358928b1461025d578063a4f9edbf1461027b578063af20af8a14610297578063b6887710146102b35761012c565b8063776d1a01116100f4578063776d1a01146101af578063798ed83d146101cb5780637c89d2f0146101e75780637ceab3b1146102055780638a6ff456146102235761012c565b806302ada99c14610131578063086cfca81461014d5780632b112e49146101695780635aef7de614610187578063715018a6146101a5575b600080fd5b61014b600480360381019061014691906121f8565b610373565b005b610167600480360381019061016291906121f8565b610433565b005b610171610575565b60405161017e9190612a3b565b60405180910390f35b61018f61061c565b60405161019c9190612686565b60405180910390f35b6101ad610642565b005b6101c960048036038101906101c491906121f8565b6106ca565b005b6101e560048036038101906101e091906122a0565b61080c565b005b6101ef6109ea565b6040516101fc9190612880565b60405180910390f35b61020d610a10565b60405161021a9190612686565b60405180910390f35b61023d600480360381019061023891906122a0565b610a36565b005b610247610c13565b6040516102549190612686565b60405180910390f35b610265610c3d565b6040516102729190612865565b60405180910390f35b6102956004803603810190610290919061231a565b610c63565b005b6102b160048036038101906102ac9190612390565b610ee0565b005b6102cd60048036038101906102c891906121f8565b6113a5565b6040516102da9190612806565b60405180910390f35b6102eb6113c5565b6040516102f89190612686565b60405180910390f35b6103096113ef565b6040516103169190612686565b60405180910390f35b610339600480360381019061033491906121f8565b611415565b005b610355600480360381019061035091906121f8565b61164b565b005b610371600480360381019061036c91906121f8565b61170b565b005b61037b611803565b73ffffffffffffffffffffffffffffffffffffffff16610399610c13565b73ffffffffffffffffffffffffffffffffffffffff16146103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e69061295b565b60405180910390fd5b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61043b611803565b73ffffffffffffffffffffffffffffffffffffffff16610459610c13565b73ffffffffffffffffffffffffffffffffffffffff16146104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a69061295b565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b6000606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d4ce63c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105df57600080fd5b505afa1580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190612363565b905090565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61064a611803565b73ffffffffffffffffffffffffffffffffffffffff16610668610c13565b73ffffffffffffffffffffffffffffffffffffffff16146106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b59061295b565b60405180910390fd5b6106c8600061180b565b565b6106d2611803565b73ffffffffffffffffffffffffffffffffffffffff166106f0610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d9061295b565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b610814611803565b73ffffffffffffffffffffffffffffffffffffffff16610832610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f9061295b565b60405180910390fd5b60005b828290508160ff1610156109e557606a600084848460ff168181106108b3576108b2612daa565b5b90506020020160208101906108c891906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109479061299b565b60405180910390fd5b6001606a600085858560ff1681811061096c5761096b612daa565b5b905060200201602081019061098191906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109dd90612cf3565b91505061088b565b505050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3e611803565b73ffffffffffffffffffffffffffffffffffffffff16610a5c610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa99061295b565b60405180910390fd5b60005b828290508160ff161015610c0e57606a600084848460ff16818110610add57610adc612daa565b5b9050602002016020810190610af291906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b709061289b565b60405180910390fd5b6000606a600085858560ff16818110610b9557610b94612daa565b5b9050602002016020810190610baa91906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c0690612cf3565b915050610ab5565b505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600085806020019051810190610c7f9190612225565b94509450945094509450610c916118d1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061297b565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906128fb565b60405180910390fd5b82606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e7e8561170b565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f98b6e848bcb9ab7cb2c546075f85f11bb4e96cbcbcb49aab03e65f45c33c621360405160405180910390a3505050505050565b82606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610f3c9190612686565b60206040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c9190612363565b1015610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906129db565b60405180910390fd5b6000610fd7610575565b9050606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161105a939291906126a1565b602060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906122ed565b506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163111156110fb576110fa3385836119ba565b5b600080600090505b848490508160ff16101561135a57606a600086868460ff1681811061112b5761112a612daa565b5b905060200201602081019061114091906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561120d5750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858360ff168181106111df576111de612daa565b5b90506020020160208101906111f491906121f8565b73ffffffffffffffffffffffffffffffffffffffff1614155b61124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906129fb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1685858360ff1681811061127957611278612daa565b5b905060200201602081019061128e91906121f8565b73ffffffffffffffffffffffffffffffffffffffff16116112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90612a1b565b60405180910390fd5b61131a85858360ff168181106112fd576112fc612daa565b5b905060200201602081019061131291906121f8565b338886611a95565b84848260ff168181106113305761132f612daa565b5b905060200201602081019061134591906121f8565b9150808061135290612cf3565b915050611103565b503373ffffffffffffffffffffffffffffffffffffffff167f19713765ac35da5948240df5d5347716cd4dc3815a2890a3c94df4a1e745136a60405160405180910390a25050505050565b606a6020528060005260406000206000915054906101000a900460ff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61141d611803565b73ffffffffffffffffffffffffffffffffffffffff1661143b610c13565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114889061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115ae578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161151e919061284a565b60206040518083038186803b15801561153657600080fd5b505afa15801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e91906122ed565b6115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a4906129bb565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116409190612686565b60405180910390a150565b611653611803565b73ffffffffffffffffffffffffffffffffffffffff16611671610c13565b73ffffffffffffffffffffffffffffffffffffffff16146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be9061295b565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611713611803565b73ffffffffffffffffffffffffffffffffffffffff16611731610c13565b73ffffffffffffffffffffffffffffffffffffffff1614611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906128db565b60405180910390fd5b6118008161180b565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff16806118f7575060008054906101000a900460ff16155b611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611986576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61198e611c12565b611996611ceb565b80156119b75760008060016101000a81548160ff0219169083151502179055505b50565b600081606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163184611a029190612b0a565b611a0c9190612ad9565b9050611a5084826040518060400160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152506000611dd4565b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a869061293b565b60405180910390fd5b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611af29190612686565b60206040518083038186803b158015611b0a57600080fd5b505afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612363565b90506000828285611b539190612b0a565b611b5d9190612ad9565b9050600063a9059cbb8683604051602401611b799291906126d8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611bca876000836000611dd4565b611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c00906128bb565b60405180910390fd5b50505050505050565b600060019054906101000a900460ff1680611c38575060008054906101000a900460ff16155b611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e9061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611cc7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015611ce85760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611d11575060008054906101000a900460ff16155b611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d479061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611da0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611db0611dab611803565b61180b565b8015611dd15760008060016101000a81548160ff0219169083151502179055505b50565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0657606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401611ed39b9a9998979695949392919061274d565b600060405180830381600087803b158015611eed57600080fd5b505af1158015611f01573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401611f679493929190612701565b602060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb991906122ed565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161208e929190612821565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050505b949350505050565b60006120dc6120d784612a7b565b612a56565b9050828152602081018484840111156120f8576120f7612e17565b5b612103848285612c80565b509392505050565b60008135905061211a816130f8565b92915050565b60008151905061212f8161310f565b92915050565b60008083601f84011261214b5761214a612e0d565b5b8235905067ffffffffffffffff81111561216857612167612e08565b5b60208301915083602082028301111561218457612183612e12565b5b9250929050565b60008151905061219a81613126565b92915050565b600082601f8301126121b5576121b4612e0d565b5b81356121c58482602086016120c9565b91505092915050565b6000813590506121dd8161313d565b92915050565b6000815190506121f28161313d565b92915050565b60006020828403121561220e5761220d612e21565b5b600061221c8482850161210b565b91505092915050565b600080600080600060a0868803121561224157612240612e21565b5b600061224f88828901612120565b955050602061226088828901612120565b945050604061227188828901612120565b935050606061228288828901612120565b925050608061229388828901612120565b9150509295509295909350565b600080602083850312156122b7576122b6612e21565b5b600083013567ffffffffffffffff8111156122d5576122d4612e1c565b5b6122e185828601612135565b92509250509250929050565b60006020828403121561230357612302612e21565b5b60006123118482850161218b565b91505092915050565b6000602082840312156123305761232f612e21565b5b600082013567ffffffffffffffff81111561234e5761234d612e1c565b5b61235a848285016121a0565b91505092915050565b60006020828403121561237957612378612e21565b5b6000612387848285016121e3565b91505092915050565b6000806000604084860312156123a9576123a8612e21565b5b60006123b7868287016121ce565b935050602084013567ffffffffffffffff8111156123d8576123d7612e1c565b5b6123e486828701612135565b92509250509250925092565b6123f981612b76565b82525050565b61240881612b64565b82525050565b61241781612b88565b82525050565b61242681612b94565b82525050565b61243581612b9e565b82525050565b600061244682612aac565b6124508185612ab7565b9350612460818560208601612c8f565b61246981612e26565b840191505092915050565b61247d81612c14565b82525050565b61248c81612c38565b82525050565b61249b81612c5c565b82525050565b6124aa81612c6e565b82525050565b60006124bd601083612ac8565b91506124c882612e37565b602082019050919050565b60006124e0601783612ac8565b91506124eb82612e60565b602082019050919050565b6000612503602683612ac8565b915061250e82612e89565b604082019050919050565b6000612526601e83612ac8565b915061253182612ed8565b602082019050919050565b6000612549602e83612ac8565b915061255482612f01565b604082019050919050565b600061256c601e83612ac8565b915061257782612f50565b602082019050919050565b600061258f602083612ac8565b915061259a82612f79565b602082019050919050565b60006125b2601e83612ac8565b91506125bd82612fa2565b602082019050919050565b60006125d5601483612ac8565b91506125e082612fcb565b602082019050919050565b60006125f8602083612ac8565b915061260382612ff4565b602082019050919050565b600061261b602883612ac8565b91506126268261301d565b604082019050919050565b600061263e600c83612ac8565b91506126498261306c565b602082019050919050565b6000612661603083612ac8565b915061266c82613095565b604082019050919050565b61268081612bfd565b82525050565b600060208201905061269b60008301846123ff565b92915050565b60006060820190506126b660008301866123ff565b6126c360208301856123ff565b6126d06040830184612677565b949350505050565b60006040820190506126ed60008301856123ff565b6126fa6020830184612677565b9392505050565b600060808201905061271660008301876123ff565b6127236020830186612677565b8181036040830152612735818561243b565b90506127446060830184612492565b95945050505050565b600061016082019050612763600083018e6123ff565b612770602083018d612677565b8181036040830152612782818c61243b565b9050612791606083018b612492565b61279e608083018a6124a1565b6127ab60a08301896124a1565b6127b860c08301886124a1565b6127c560e08301876123ff565b6127d36101008301866123f0565b8181036101208301526127e6818561243b565b90506127f66101408301846123ff565b9c9b505050505050505050505050565b600060208201905061281b600083018461240e565b92915050565b6000604082019050612836600083018561241d565b612843602083018461240e565b9392505050565b600060208201905061285f600083018461242c565b92915050565b600060208201905061287a6000830184612474565b92915050565b60006020820190506128956000830184612483565b92915050565b600060208201905081810360008301526128b4816124b0565b9050919050565b600060208201905081810360008301526128d4816124d3565b9050919050565b600060208201905081810360008301526128f4816124f6565b9050919050565b6000602082019050818103600083015261291481612519565b9050919050565b600060208201905081810360008301526129348161253c565b9050919050565b600060208201905081810360008301526129548161255f565b9050919050565b6000602082019050818103600083015261297481612582565b9050919050565b60006020820190508181036000830152612994816125a5565b9050919050565b600060208201905081810360008301526129b4816125c8565b9050919050565b600060208201905081810360008301526129d4816125eb565b9050919050565b600060208201905081810360008301526129f48161260e565b9050919050565b60006020820190508181036000830152612a1481612631565b9050919050565b60006020820190508181036000830152612a3481612654565b9050919050565b6000602082019050612a506000830184612677565b92915050565b6000612a60612a71565b9050612a6c8282612cc2565b919050565b6000604051905090565b600067ffffffffffffffff821115612a9657612a95612dd9565b5b612a9f82612e26565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ae482612bfd565b9150612aef83612bfd565b925082612aff57612afe612d4c565b5b828204905092915050565b6000612b1582612bfd565b9150612b2083612bfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5957612b58612d1d565b5b828202905092915050565b6000612b6f82612bdd565b9050919050565b6000612b8182612bdd565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050612bd8826130e4565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c1f82612c26565b9050919050565b6000612c3182612bdd565b9050919050565b6000612c4382612c4a565b9050919050565b6000612c5582612bdd565b9050919050565b6000612c6782612bca565b9050919050565b6000612c7982612bfd565b9050919050565b82818337600083830152505050565b60005b83811015612cad578082015181840152602081019050612c92565b83811115612cbc576000848401525b50505050565b612ccb82612e26565b810181811067ffffffffffffffff82111715612cea57612ce9612dd9565b5b80604052505050565b6000612cfe82612c07565b915060ff821415612d1257612d11612d1d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546f6b656e206e6f742064656e69656400000000000000000000000000000000600082015250565b7f4572726f72206f6e20746f6b656e207472616e73666572000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4572726f72206f6e206e6174697665206173736574207472616e736665720000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f546f6b656e20616c72656164792064656e696564000000000000000000000000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f416d6f756e7420746f2072656465656d2069732067726561746572207468616e60008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b7f44656e69656420746f6b656e0000000000000000000000000000000000000000600082015250565b7f746f6b656e735b5d206973206f7574206f66206f72646572206f7220636f6e7460008201527f61696e732061206475706c696361746500000000000000000000000000000000602082015250565b600281106130f5576130f4612d7b565b5b50565b61310181612b64565b811461310c57600080fd5b50565b61311881612b76565b811461312357600080fd5b50565b61312f81612b88565b811461313a57600080fd5b50565b61314681612bfd565b811461315157600080fd5b5056fea26469706673582212203d8297274cb6a0b91b222121ecfbebbbbd7742b02ec3429b92c46dd603bd726964736f6c63430008060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638da5cb5b116100ad578063c910638911610071578063c9106389146102e3578063d4b8399214610301578063e19a9dd91461031f578063ef9688041461033b578063f2fde38b146103575761012c565b80638da5cb5b1461023f5780639358928b1461025d578063a4f9edbf1461027b578063af20af8a14610297578063b6887710146102b35761012c565b8063776d1a01116100f4578063776d1a01146101af578063798ed83d146101cb5780637c89d2f0146101e75780637ceab3b1146102055780638a6ff456146102235761012c565b806302ada99c14610131578063086cfca81461014d5780632b112e49146101695780635aef7de614610187578063715018a6146101a5575b600080fd5b61014b600480360381019061014691906121f8565b610373565b005b610167600480360381019061016291906121f8565b610433565b005b610171610575565b60405161017e9190612a3b565b60405180910390f35b61018f61061c565b60405161019c9190612686565b60405180910390f35b6101ad610642565b005b6101c960048036038101906101c491906121f8565b6106ca565b005b6101e560048036038101906101e091906122a0565b61080c565b005b6101ef6109ea565b6040516101fc9190612880565b60405180910390f35b61020d610a10565b60405161021a9190612686565b60405180910390f35b61023d600480360381019061023891906122a0565b610a36565b005b610247610c13565b6040516102549190612686565b60405180910390f35b610265610c3d565b6040516102729190612865565b60405180910390f35b6102956004803603810190610290919061231a565b610c63565b005b6102b160048036038101906102ac9190612390565b610ee0565b005b6102cd60048036038101906102c891906121f8565b6113a5565b6040516102da9190612806565b60405180910390f35b6102eb6113c5565b6040516102f89190612686565b60405180910390f35b6103096113ef565b6040516103169190612686565b60405180910390f35b610339600480360381019061033491906121f8565b611415565b005b610355600480360381019061035091906121f8565b61164b565b005b610371600480360381019061036c91906121f8565b61170b565b005b61037b611803565b73ffffffffffffffffffffffffffffffffffffffff16610399610c13565b73ffffffffffffffffffffffffffffffffffffffff16146103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e69061295b565b60405180910390fd5b80606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61043b611803565b73ffffffffffffffffffffffffffffffffffffffff16610459610c13565b73ffffffffffffffffffffffffffffffffffffffff16146104af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a69061295b565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b6000606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d4ce63c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105df57600080fd5b505afa1580156105f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106179190612363565b905090565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61064a611803565b73ffffffffffffffffffffffffffffffffffffffff16610668610c13565b73ffffffffffffffffffffffffffffffffffffffff16146106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b59061295b565b60405180910390fd5b6106c8600061180b565b565b6106d2611803565b73ffffffffffffffffffffffffffffffffffffffff166106f0610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d9061295b565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b610814611803565b73ffffffffffffffffffffffffffffffffffffffff16610832610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610888576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087f9061295b565b60405180910390fd5b60005b828290508160ff1610156109e557606a600084848460ff168181106108b3576108b2612daa565b5b90506020020160208101906108c891906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109479061299b565b60405180910390fd5b6001606a600085858560ff1681811061096c5761096b612daa565b5b905060200201602081019061098191906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109dd90612cf3565b91505061088b565b505050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3e611803565b73ffffffffffffffffffffffffffffffffffffffff16610a5c610c13565b73ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa99061295b565b60405180910390fd5b60005b828290508160ff161015610c0e57606a600084848460ff16818110610add57610adc612daa565b5b9050602002016020810190610af291906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b709061289b565b60405180910390fd5b6000606a600085858560ff16818110610b9557610b94612daa565b5b9050602002016020810190610baa91906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c0690612cf3565b915050610ab5565b505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600085806020019051810190610c7f9190612225565b94509450945094509450610c916118d1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf89061297b565b60405180910390fd5b83606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da9906128fb565b60405180910390fd5b82606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e7e8561170b565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f98b6e848bcb9ab7cb2c546075f85f11bb4e96cbcbcb49aab03e65f45c33c621360405160405180910390a3505050505050565b82606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610f3c9190612686565b60206040518083038186803b158015610f5457600080fd5b505afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c9190612363565b1015610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906129db565b60405180910390fd5b6000610fd7610575565b9050606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518463ffffffff1660e01b815260040161105a939291906126a1565b602060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906122ed565b506000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163111156110fb576110fa3385836119ba565b5b600080600090505b848490508160ff16101561135a57606a600086868460ff1681811061112b5761112a612daa565b5b905060200201602081019061114091906121f8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561120d5750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685858360ff168181106111df576111de612daa565b5b90506020020160208101906111f491906121f8565b73ffffffffffffffffffffffffffffffffffffffff1614155b61124c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611243906129fb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1685858360ff1681811061127957611278612daa565b5b905060200201602081019061128e91906121f8565b73ffffffffffffffffffffffffffffffffffffffff16116112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90612a1b565b60405180910390fd5b61131a85858360ff168181106112fd576112fc612daa565b5b905060200201602081019061131291906121f8565b338886611a95565b84848260ff168181106113305761132f612daa565b5b905060200201602081019061134591906121f8565b9150808061135290612cf3565b915050611103565b503373ffffffffffffffffffffffffffffffffffffffff167f19713765ac35da5948240df5d5347716cd4dc3815a2890a3c94df4a1e745136a60405160405180910390a25050505050565b606a6020528060005260406000206000915054906101000a900460ff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61141d611803565b73ffffffffffffffffffffffffffffffffffffffff1661143b610c13565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114889061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146115ae578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161151e919061284a565b60206040518083038186803b15801561153657600080fd5b505afa15801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e91906122ed565b6115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a4906129bb565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516116409190612686565b60405180910390a150565b611653611803565b73ffffffffffffffffffffffffffffffffffffffff16611671610c13565b73ffffffffffffffffffffffffffffffffffffffff16146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be9061295b565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611713611803565b73ffffffffffffffffffffffffffffffffffffffff16611731610c13565b73ffffffffffffffffffffffffffffffffffffffff1614611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e9061295b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ee906128db565b60405180910390fd5b6118008161180b565b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff16806118f7575060008054906101000a900460ff16155b611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d9061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611986576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61198e611c12565b611996611ceb565b80156119b75760008060016101000a81548160ff0219169083151502179055505b50565b600081606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163184611a029190612b0a565b611a0c9190612ad9565b9050611a5084826040518060400160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152506000611dd4565b611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a869061293b565b60405180910390fd5b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611af29190612686565b60206040518083038186803b158015611b0a57600080fd5b505afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190612363565b90506000828285611b539190612b0a565b611b5d9190612ad9565b9050600063a9059cbb8683604051602401611b799291906126d8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611bca876000836000611dd4565b611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c00906128bb565b60405180910390fd5b50505050505050565b600060019054906101000a900460ff1680611c38575060008054906101000a900460ff16155b611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e9061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611cc7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015611ce85760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611d11575060008054906101000a900460ff16155b611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d479061291b565b60405180910390fd5b60008060019054906101000a900460ff161590508015611da0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b611db0611dab611803565b61180b565b8015611dd15760008060016101000a81548160ff0219169083151502179055505b50565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0657606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401611ed39b9a9998979695949392919061274d565b600060405180830381600087803b158015611eed57600080fd5b505af1158015611f01573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401611f679493929190612701565b602060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb991906122ed565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b815260040161208e929190612821565b600060405180830381600087803b1580156120a857600080fd5b505af11580156120bc573d6000803e3d6000fd5b505050505b949350505050565b60006120dc6120d784612a7b565b612a56565b9050828152602081018484840111156120f8576120f7612e17565b5b612103848285612c80565b509392505050565b60008135905061211a816130f8565b92915050565b60008151905061212f8161310f565b92915050565b60008083601f84011261214b5761214a612e0d565b5b8235905067ffffffffffffffff81111561216857612167612e08565b5b60208301915083602082028301111561218457612183612e12565b5b9250929050565b60008151905061219a81613126565b92915050565b600082601f8301126121b5576121b4612e0d565b5b81356121c58482602086016120c9565b91505092915050565b6000813590506121dd8161313d565b92915050565b6000815190506121f28161313d565b92915050565b60006020828403121561220e5761220d612e21565b5b600061221c8482850161210b565b91505092915050565b600080600080600060a0868803121561224157612240612e21565b5b600061224f88828901612120565b955050602061226088828901612120565b945050604061227188828901612120565b935050606061228288828901612120565b925050608061229388828901612120565b9150509295509295909350565b600080602083850312156122b7576122b6612e21565b5b600083013567ffffffffffffffff8111156122d5576122d4612e1c565b5b6122e185828601612135565b92509250509250929050565b60006020828403121561230357612302612e21565b5b60006123118482850161218b565b91505092915050565b6000602082840312156123305761232f612e21565b5b600082013567ffffffffffffffff81111561234e5761234d612e1c565b5b61235a848285016121a0565b91505092915050565b60006020828403121561237957612378612e21565b5b6000612387848285016121e3565b91505092915050565b6000806000604084860312156123a9576123a8612e21565b5b60006123b7868287016121ce565b935050602084013567ffffffffffffffff8111156123d8576123d7612e1c565b5b6123e486828701612135565b92509250509250925092565b6123f981612b76565b82525050565b61240881612b64565b82525050565b61241781612b88565b82525050565b61242681612b94565b82525050565b61243581612b9e565b82525050565b600061244682612aac565b6124508185612ab7565b9350612460818560208601612c8f565b61246981612e26565b840191505092915050565b61247d81612c14565b82525050565b61248c81612c38565b82525050565b61249b81612c5c565b82525050565b6124aa81612c6e565b82525050565b60006124bd601083612ac8565b91506124c882612e37565b602082019050919050565b60006124e0601783612ac8565b91506124eb82612e60565b602082019050919050565b6000612503602683612ac8565b915061250e82612e89565b604082019050919050565b6000612526601e83612ac8565b915061253182612ed8565b602082019050919050565b6000612549602e83612ac8565b915061255482612f01565b604082019050919050565b600061256c601e83612ac8565b915061257782612f50565b602082019050919050565b600061258f602083612ac8565b915061259a82612f79565b602082019050919050565b60006125b2601e83612ac8565b91506125bd82612fa2565b602082019050919050565b60006125d5601483612ac8565b91506125e082612fcb565b602082019050919050565b60006125f8602083612ac8565b915061260382612ff4565b602082019050919050565b600061261b602883612ac8565b91506126268261301d565b604082019050919050565b600061263e600c83612ac8565b91506126498261306c565b602082019050919050565b6000612661603083612ac8565b915061266c82613095565b604082019050919050565b61268081612bfd565b82525050565b600060208201905061269b60008301846123ff565b92915050565b60006060820190506126b660008301866123ff565b6126c360208301856123ff565b6126d06040830184612677565b949350505050565b60006040820190506126ed60008301856123ff565b6126fa6020830184612677565b9392505050565b600060808201905061271660008301876123ff565b6127236020830186612677565b8181036040830152612735818561243b565b90506127446060830184612492565b95945050505050565b600061016082019050612763600083018e6123ff565b612770602083018d612677565b8181036040830152612782818c61243b565b9050612791606083018b612492565b61279e608083018a6124a1565b6127ab60a08301896124a1565b6127b860c08301886124a1565b6127c560e08301876123ff565b6127d36101008301866123f0565b8181036101208301526127e6818561243b565b90506127f66101408301846123ff565b9c9b505050505050505050505050565b600060208201905061281b600083018461240e565b92915050565b6000604082019050612836600083018561241d565b612843602083018461240e565b9392505050565b600060208201905061285f600083018461242c565b92915050565b600060208201905061287a6000830184612474565b92915050565b60006020820190506128956000830184612483565b92915050565b600060208201905081810360008301526128b4816124b0565b9050919050565b600060208201905081810360008301526128d4816124d3565b9050919050565b600060208201905081810360008301526128f4816124f6565b9050919050565b6000602082019050818103600083015261291481612519565b9050919050565b600060208201905081810360008301526129348161253c565b9050919050565b600060208201905081810360008301526129548161255f565b9050919050565b6000602082019050818103600083015261297481612582565b9050919050565b60006020820190508181036000830152612994816125a5565b9050919050565b600060208201905081810360008301526129b4816125c8565b9050919050565b600060208201905081810360008301526129d4816125eb565b9050919050565b600060208201905081810360008301526129f48161260e565b9050919050565b60006020820190508181036000830152612a1481612631565b9050919050565b60006020820190508181036000830152612a3481612654565b9050919050565b6000602082019050612a506000830184612677565b92915050565b6000612a60612a71565b9050612a6c8282612cc2565b919050565b6000604051905090565b600067ffffffffffffffff821115612a9657612a95612dd9565b5b612a9f82612e26565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ae482612bfd565b9150612aef83612bfd565b925082612aff57612afe612d4c565b5b828204905092915050565b6000612b1582612bfd565b9150612b2083612bfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b5957612b58612d1d565b5b828202905092915050565b6000612b6f82612bdd565b9050919050565b6000612b8182612bdd565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050612bd8826130e4565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000612c1f82612c26565b9050919050565b6000612c3182612bdd565b9050919050565b6000612c4382612c4a565b9050919050565b6000612c5582612bdd565b9050919050565b6000612c6782612bca565b9050919050565b6000612c7982612bfd565b9050919050565b82818337600083830152505050565b60005b83811015612cad578082015181840152602081019050612c92565b83811115612cbc576000848401525b50505050565b612ccb82612e26565b810181811067ffffffffffffffff82111715612cea57612ce9612dd9565b5b80604052505050565b6000612cfe82612c07565b915060ff821415612d1257612d11612d1d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f546f6b656e206e6f742064656e69656400000000000000000000000000000000600082015250565b7f4572726f72206f6e20746f6b656e207472616e73666572000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4572726f72206f6e206e6174697665206173736574207472616e736665720000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f546f6b656e20616c72656164792064656e696564000000000000000000000000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f416d6f756e7420746f2072656465656d2069732067726561746572207468616e60008201527f2062616c616e6365000000000000000000000000000000000000000000000000602082015250565b7f44656e69656420746f6b656e0000000000000000000000000000000000000000600082015250565b7f746f6b656e735b5d206973206f7574206f66206f72646572206f7220636f6e7460008201527f61696e732061206475706c696361746500000000000000000000000000000000602082015250565b600281106130f5576130f4612d7b565b5b50565b61310181612b64565b811461310c57600080fd5b50565b61311881612b76565b811461312357600080fd5b50565b61312f81612b88565b811461313a57600080fd5b50565b61314681612bfd565b811461315157600080fd5b5056fea26469706673582212203d8297274cb6a0b91b222121ecfbebbbbd7742b02ec3429b92c46dd603bd726964736f6c63430008060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/OZGovernorModule.json b/packages/app/src/contracts/OZGovernorModule.json deleted file mode 100644 index ed52f4c4..00000000 --- a/packages/app/src/contracts/OZGovernorModule.json +++ /dev/null @@ -1,1090 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "OZGovernorModule", - "sourceName": "contracts/OZGovernorModule.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "address", - "name": "_multisend", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "uint256", - "name": "_votingDelay", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_votingPeriod", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_proposalThreshold", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_quorum", - "type": "uint256" - }, - { - "internalType": "uint64", - "name": "_initialVoteExtension", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "TransactionsFailed", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "oldVoteExtension", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "newVoteExtension", - "type": "uint64" - } - ], - "name": "LateQuorumVoteExtensionSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "multisend", - "type": "address" - } - ], - "name": "MultisendSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "OZGovernorModuleSetUp", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "ProposalCanceled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "proposer", - "type": "address" - }, - { - "indexed": false, - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "indexed": false, - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "indexed": false, - "internalType": "string[]", - "name": "signatures", - "type": "string[]" - }, - { - "indexed": false, - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "startBlock", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "endBlock", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "description", - "type": "string" - } - ], - "name": "ProposalCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "ProposalExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "extendedDeadline", - "type": "uint64" - } - ], - "name": "ProposalExtended", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldProposalThreshold", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newProposalThreshold", - "type": "uint256" - } - ], - "name": "ProposalThresholdSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldQuorumNumerator", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newQuorumNumerator", - "type": "uint256" - } - ], - "name": "QuorumNumeratorUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "voter", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "support", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "weight", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "VoteCast", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldVotingDelay", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newVotingDelay", - "type": "uint256" - } - ], - "name": "VotingDelaySet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldVotingPeriod", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newVotingPeriod", - "type": "uint256" - } - ], - "name": "VotingPeriodSet", - "type": "event" - }, - { - "inputs": [], - "name": "BALLOT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "COUNTING_MODE", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "support", - "type": "uint8" - } - ], - "name": "castVote", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "support", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "castVoteBySig", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "support", - "type": "uint8" - }, - { - "internalType": "string", - "name": "reason", - "type": "string" - } - ], - "name": "castVoteWithReason", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "descriptionHash", - "type": "bytes32" - } - ], - "name": "execute", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "getVotes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasVoted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "descriptionHash", - "type": "bytes32" - } - ], - "name": "hashProposal", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "lateQuorumVoteExtension", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "multisend", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "proposalDeadline", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "proposalSnapshot", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proposalThreshold", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "proposalVotes", - "outputs": [ - { - "internalType": "uint256", - "name": "againstVotes", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "forVotes", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "abstainVotes", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - }, - { - "internalType": "string", - "name": "description", - "type": "string" - } - ], - "name": "propose", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "quorum", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "quorumDenominator", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "quorumNumerator", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "relay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newVoteExtension", - "type": "uint64" - } - ], - "name": "setLateQuorumVoteExtension", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_multisend", - "type": "address" - } - ], - "name": "setMultisend", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newProposalThreshold", - "type": "uint256" - } - ], - "name": "setProposalThreshold", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initializeParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newVotingDelay", - "type": "uint256" - } - ], - "name": "setVotingDelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newVotingPeriod", - "type": "uint256" - } - ], - "name": "setVotingPeriod", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } - ], - "name": "state", - "outputs": [ - { - "internalType": "enum IGovernorUpgradeable.ProposalState", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract IVotesUpgradeable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newQuorumNumerator", - "type": "uint256" - } - ], - "name": "updateQuorumNumerator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "votingDelay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "votingPeriod", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b506040516200759738038062007597833981810160405281019062000037919062000e96565b60008a8a8a8a8a8a8a8a8a8a6040516020016200005e9a999897969594939291906200103b565b604051602081830303815290604052905062000080816200009160201b60201c565b505050505050505050505062001591565b600060019054906101000a900460ff16620000bb5760008054906101000a900460ff1615620000cc565b620000cb6200034f60201b60201c565b5b6200010e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001059062001168565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200015f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6000806000806000806000806000808b806020019051810190620001849190620011cf565b9950995099509950995099509950995099509950896101f860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550886101fa60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550876101f960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026f866200036d60201b60201c565b62000282858585620003f460201b60201c565b620002926200045e60201b60201c565b620002a387620004b260201b60201c565b620002b4826200051860201b60201c565b620002c5816200057e60201b60201c565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f636e209fff6b662c507f20ad7b6e82c9aed68a65e25693848ff96d0b1614c66060405160405180910390a35050505050505050505080156200034b5760008060016101000a81548160ff0219169083151502179055505b5050565b60006200036730620005e460201b62001f4f1760201c565b15905090565b600060019054906101000a900460ff16620003bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003b6906200135a565b60405180910390fd5b620003e081620003d46200060760201b60201c565b6200064460201b60201c565b620003f181620006c260201b60201c565b50565b600060019054906101000a900460ff1662000446576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043d906200135a565b60405180910390fd5b620004598383836200073060201b60201c565b505050565b600060019054906101000a900460ff16620004b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a7906200135a565b60405180910390fd5b565b600060019054906101000a900460ff1662000504576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004fb906200135a565b60405180910390fd5b6200051581620007ba60201b60201c565b50565b600060019054906101000a900460ff166200056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000561906200135a565b60405180910390fd5b6200057b816200085160201b60201c565b50565b600060019054906101000a900460ff16620005d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c7906200135a565b60405180910390fd5b620005e181620008b760201b60201c565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250905090565b600060019054906101000a900460ff1662000696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200068d906200135a565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b600060019054906101000a900460ff1662000714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070b906200135a565b60405180910390fd5b8060cb90805190602001906200072c92919062000b64565b5050565b600060019054906101000a900460ff1662000782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000779906200135a565b60405180910390fd5b62000793836200091d60201b60201c565b620007a4826200096460201b60201c565b620007b581620009f160201b60201c565b505050565b600060019054906101000a900460ff166200080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000803906200135a565b60405180910390fd5b8061016160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff16620008a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089a906200135a565b60405180910390fd5b620008b48162000a3860201b60201c565b50565b600060019054906101000a900460ff1662000909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000900906200135a565b60405180910390fd5b6200091a8162000adc60201b60201c565b50565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360fd5482604051620009529291906200137c565b60405180910390a18060fd8190555050565b60008111620009aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a1906200141f565b60405180910390fd5b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e882860fe5482604051620009df9291906200137c565b60405180910390a18060fe8190555050565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546160ff548260405162000a269291906200137c565b60405180910390a18060ff8190555050565b62000a4862000b5b60201b60201c565b81111562000a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8490620014dd565b60405180910390fd5b600061019454905081610194819055507f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997818360405162000ad09291906200137c565b60405180910390a15050565b7f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc26101c660009054906101000a900467ffffffffffffffff168260405162000b26929190620014ff565b60405180910390a1806101c660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b60006064905090565b82805462000b72906200155b565b90600052602060002090601f01602090048101928262000b96576000855562000be2565b82601f1062000bb157805160ff191683800117855562000be2565b8280016001018555821562000be2579182015b8281111562000be157825182559160200191906001019062000bc4565b5b50905062000bf1919062000bf5565b5090565b5b8082111562000c1057600081600090555060010162000bf6565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c558262000c28565b9050919050565b62000c678162000c48565b811462000c7357600080fd5b50565b60008151905062000c878162000c5c565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000ce28262000c97565b810181811067ffffffffffffffff8211171562000d045762000d0362000ca8565b5b80604052505050565b600062000d1962000c14565b905062000d27828262000cd7565b919050565b600067ffffffffffffffff82111562000d4a5762000d4962000ca8565b5b62000d558262000c97565b9050602081019050919050565b60005b8381101562000d8257808201518184015260208101905062000d65565b8381111562000d92576000848401525b50505050565b600062000daf62000da98462000d2c565b62000d0d565b90508281526020810184848401111562000dce5762000dcd62000c92565b5b62000ddb84828562000d62565b509392505050565b600082601f83011262000dfb5762000dfa62000c8d565b5b815162000e0d84826020860162000d98565b91505092915050565b6000819050919050565b62000e2b8162000e16565b811462000e3757600080fd5b50565b60008151905062000e4b8162000e20565b92915050565b600067ffffffffffffffff82169050919050565b62000e708162000e51565b811462000e7c57600080fd5b50565b60008151905062000e908162000e65565b92915050565b6000806000806000806000806000806101408b8d03121562000ebd5762000ebc62000c1e565b5b600062000ecd8d828e0162000c76565b9a5050602062000ee08d828e0162000c76565b995050604062000ef38d828e0162000c76565b985050606062000f068d828e0162000c76565b97505060808b015167ffffffffffffffff81111562000f2a5762000f2962000c23565b5b62000f388d828e0162000de3565b96505060a062000f4b8d828e0162000e3a565b95505060c062000f5e8d828e0162000e3a565b94505060e062000f718d828e0162000e3a565b93505061010062000f858d828e0162000e3a565b92505061012062000f998d828e0162000e7f565b9150509295989b9194979a5092959850565b62000fb68162000c48565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000fe58262000fbc565b62000ff1818562000fc7565b93506200100381856020860162000d62565b6200100e8162000c97565b840191505092915050565b620010248162000e16565b82525050565b620010358162000e51565b82525050565b60006101408201905062001053600083018d62000fab565b62001062602083018c62000fab565b62001071604083018b62000fab565b62001080606083018a62000fab565b818103608083015262001094818962000fd8565b9050620010a560a083018862001019565b620010b460c083018762001019565b620010c360e083018662001019565b620010d361010083018562001019565b620010e36101208301846200102a565b9b9a5050505050505050505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600062001150602e8362000fc7565b91506200115d82620010f2565b604082019050919050565b60006020820190508181036000830152620011838162001141565b9050919050565b6000620011978262000c28565b9050919050565b620011a9816200118a565b8114620011b557600080fd5b50565b600081519050620011c9816200119e565b92915050565b6000806000806000806000806000806101408b8d031215620011f657620011f562000c1e565b5b6000620012068d828e01620011b8565b9a50506020620012198d828e01620011b8565b99505060406200122c8d828e01620011b8565b98505060606200123f8d828e01620011b8565b97505060808b015167ffffffffffffffff81111562001263576200126262000c23565b5b620012718d828e0162000de3565b96505060a0620012848d828e0162000e3a565b95505060c0620012978d828e0162000e3a565b94505060e0620012aa8d828e0162000e3a565b935050610100620012be8d828e0162000e3a565b925050610120620012d28d828e0162000e7f565b9150509295989b9194979a5092959850565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b600062001342602b8362000fc7565b91506200134f82620012e4565b604082019050919050565b60006020820190508181036000830152620013758162001333565b9050919050565b600060408201905062001393600083018562001019565b620013a2602083018462001019565b9392505050565b7f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060008201527f746f6f206c6f7700000000000000000000000000000000000000000000000000602082015250565b60006200140760278362000fc7565b91506200141482620013a9565b604082019050919050565b600060208201905081810360008301526200143a81620013f8565b9050919050565b7f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60008201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160208201527f746f720000000000000000000000000000000000000000000000000000000000604082015250565b6000620014c560438362000fc7565b9150620014d28262001441565b606082019050919050565b60006020820190508181036000830152620014f881620014b6565b9050919050565b60006040820190506200151660008301856200102a565b6200152560208301846200102a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200157457607f821691505b602082108114156200158b576200158a6200152c565b5b50919050565b615ff680620015a16000396000f3fe6080604052600436106102295760003560e01c80638b95eccd11610123578063d07f91e9116100ab578063eb9019d41161006f578063eb9019d4146108bc578063ece40cc1146108f9578063f2fde38b14610922578063f8ce560a1461094b578063fc0c546a146109885761026f565b8063d07f91e9146107e9578063d4b8399214610812578063dd4e2ba51461083d578063deaaa7cc14610868578063ea0217cf146108935761026f565b8063a7713a70116100f2578063a7713a70146106f0578063b58131b01461071b578063c01f9e3714610746578063c28bc2fa14610783578063c59057e4146107ac5761026f565b80638b95eccd146106485780638da5cb5b1461067157806397c3d3341461069c578063a4f9edbf146106c75761026f565b80633bccf4fd116101b15780635678138811610175578063567813881461053f57806370b0f6601461057c578063776d1a01146105a55780637b3c71d3146105ce5780637d5e81e21461060b5761026f565b80633bccf4fd1461041e5780633e4f49e61461045b5780634385963214610498578063544ffc9c146104d557806354fd4d50146105145761026f565b80632656227d116101f85780632656227d14610330578063294402cc146103605780632d63f6931461038b57806332b8113e146103c85780633932abb1146103f35761026f565b806301ffc9a71461027457806302a251a3146102b157806306f3f9e6146102dc57806306fdde03146103055761026f565b3661026f573073ffffffffffffffffffffffffffffffffffffffff1661024d6109b3565b73ffffffffffffffffffffffffffffffffffffffff161461026d57600080fd5b005b600080fd5b34801561028057600080fd5b5061029b60048036038101906102969190613601565b6109de565b6040516102a89190613649565b60405180910390f35b3480156102bd57600080fd5b506102c6610a58565b6040516102d3919061367d565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906136c4565b610a62565b005b34801561031157600080fd5b5061031a610aea565b604051610327919061378a565b60405180910390f35b61034a60048036038101906103459190613be1565b610b7c565b604051610357919061367d565b60405180910390f35b34801561036c57600080fd5b50610375610cb0565b6040516103829190613cab565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906136c4565b610cd7565b6040516103bf919061367d565b60405180910390f35b3480156103d457600080fd5b506103dd610d45565b6040516103ea9190613ce9565b60405180910390f35b3480156103ff57600080fd5b50610408610d64565b604051610415919061367d565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190613d3d565b610d6e565b604051610452919061367d565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906136c4565b610df8565b60405161048f9190613e2f565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613e4a565b610f0d565b6040516104cc9190613649565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906136c4565b610f79565b60405161050b93929190613e8a565b60405180910390f35b34801561052057600080fd5b50610529610fb2565b604051610536919061378a565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613ec1565b610fef565b604051610573919061367d565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906136c4565b611020565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613f01565b6110a8565b005b3480156105da57600080fd5b506105f560048036038101906105f09190613f89565b6111e6565b604051610602919061367d565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d919061409e565b61124e565b60405161063f919061367d565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613f01565b61154e565b005b34801561067d57600080fd5b50610686611652565b6040516106939190613cab565b60405180910390f35b3480156106a857600080fd5b506106b1611679565b6040516106be919061367d565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e99190614175565b611682565b005b3480156106fc57600080fd5b506107056118ff565b604051610712919061367d565b60405180910390f35b34801561072757600080fd5b5061073061190a565b60405161073d919061367d565b60405180910390f35b34801561075257600080fd5b5061076d600480360381019061076891906136c4565b611919565b60405161077a919061367d565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a59190614214565b61192b565b005b3480156107b857600080fd5b506107d360048036038101906107ce9190613be1565b6119fd565b6040516107e0919061367d565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906142b4565b611a39565b005b34801561081e57600080fd5b50610827611ac1565b6040516108349190613cab565b60405180910390f35b34801561084957600080fd5b50610852611ae8565b60405161085f919061378a565b60405180910390f35b34801561087457600080fd5b5061087d611b25565b60405161088a91906142f0565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b591906136c4565b611b49565b005b3480156108c857600080fd5b506108e360048036038101906108de919061430b565b611bd1565b6040516108f0919061367d565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906136c4565b611c89565b005b34801561092e57600080fd5b5061094960048036038101906109449190613f01565b611d11565b005b34801561095757600080fd5b50610972600480360381019061096d91906136c4565b611e4f565b60405161097f919061367d565b60405180910390f35b34801561099457600080fd5b5061099d611f28565b6040516109aa91906143aa565b60405180910390f35b60006101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007fbf26d897000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a515750610a5082611f72565b5b9050919050565b600060fe54905090565b610a6a6109b3565b73ffffffffffffffffffffffffffffffffffffffff16610a88611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590614411565b60405180910390fd5b610ae781611fe4565b50565b606060cb8054610af990614460565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2590614460565b8015610b725780601f10610b4757610100808354040283529160200191610b72565b820191906000526020600020905b815481529060010190602001808311610b5557829003601f168201915b5050505050905090565b600080610b8b868686866119fd565b90506000610b9882610df8565b905060046007811115610bae57610bad613db8565b5b816007811115610bc157610bc0613db8565b5b1480610bf1575060056007811115610bdc57610bdb613db8565b5b816007811115610bef57610bee613db8565b5b145b610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790614504565b60405180910390fd5b600160cc600084815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051610c8e919061367d565b60405180910390a1610ca3828888888861207b565b8192505050949350505050565b6101f960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d3460cc60008481526020019081526020016000206000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff169050919050565b60006101c660009054906101000a900467ffffffffffffffff16905090565b600060fd54905090565b600080610dcf610dc77f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f8989604051602001610dac93929190614533565b60405160208183030381529060405280519060200120612247565b868686612261565b9050610dec8782886040518060200160405280600081525061228c565b91505095945050505050565b60008060cc600084815260200190815260200160002090508060020160009054906101000a900460ff1615610e31576007915050610f08565b8060020160019054906101000a900460ff1615610e52576002915050610f08565b6000610e5d84610cd7565b90506000811415610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a906145b6565b60405180910390fd5b438110610eb557600092505050610f08565b6000610ec085611919565b9050438110610ed55760019350505050610f08565b610ede856122a4565b8015610eef5750610eee856122ec565b5b15610f005760049350505050610f08565b600393505050505b919050565b600061012f600084815260200190815260200160002060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008061012f60008681526020019081526020016000209050806000015481600101548260020154935093509350509193909250565b60606040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250905090565b600080610ffa611fdc565b90506110178482856040518060200160405280600081525061228c565b91505092915050565b6110286109b3565b73ffffffffffffffffffffffffffffffffffffffff16611046611fdc565b73ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390614411565b60405180910390fd5b6110a581612318565b50565b6110b06109b3565b73ffffffffffffffffffffffffffffffffffffffff166110ce611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90614411565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a3806101fa60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806111f1611fdc565b905061124386828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061228c565b915050949350505050565b600061125861190a565b61126e336001436112699190614605565b611bd1565b10156112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a6906146d1565b60405180910390fd5b60006112c486868686805190602001206119fd565b9050845186511461130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190614763565b60405180910390fd5b835186511461134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590614763565b60405180910390fd5b6000865111611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906147cf565b60405180910390fd5b600060cc600083815260200190815260200160002090506113f2816000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505061235d565b611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890614861565b60405180910390fd5b600061144361143e610d64565b612377565b61144c43612377565b6114569190614881565b9050600061146a611465610a58565b612377565b826114759190614881565b905061148d82846000016123ce90919063ffffffff16565b6114a381846001016123ce90919063ffffffff16565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0846114cd611fdc565b8b8b8d5167ffffffffffffffff8111156114ea576114e96137b1565b5b60405190808252806020026020018201604052801561151d57816020015b60608152602001906001900390816115085790505b508c88888e60405161153799989796959493929190614c8f565b60405180910390a183945050505050949350505050565b6115566109b3565b73ffffffffffffffffffffffffffffffffffffffff16611574611fdc565b73ffffffffffffffffffffffffffffffffffffffff16146115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c190614411565b60405180910390fd5b806101f960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe4d105ea08807ad5b7301b7bf6cb385189ef18304cef1417cb2f76077b81413160405160405180910390a250565b6101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006064905090565b600060019054906101000a900460ff166116aa5760008054906101000a900460ff16156116b3565b6116b26123fd565b5b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990614db1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611742576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6000806000806000806000806000808b8060200190518101906117659190614ea9565b9950995099509950995099509950995099509950896101f860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550886101fa60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550876101f960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118488661240e565b61185385858561247a565b61185b6124d9565b6118648761252a565b61186d82612585565b611876816125e0565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f636e209fff6b662c507f20ad7b6e82c9aed68a65e25693848ff96d0b1614c66060405160405180910390a35050505050505050505080156118fb5760008060016101000a81548160ff0219169083151502179055505b5050565b600061019454905090565b600061191461263b565b905090565b600061192482612645565b9050919050565b6119336109b3565b73ffffffffffffffffffffffffffffffffffffffff16611951611fdc565b73ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90614411565b60405180910390fd5b6119f68483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050856126c2565b5050505050565b600084848484604051602001611a169493929190614fa4565b6040516020818303038152906040528051906020012060001c9050949350505050565b611a416109b3565b73ffffffffffffffffffffffffffffffffffffffff16611a5f611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90614411565b60405180910390fd5b611abe816126f1565b50565b6101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280602081526020017f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e815250905090565b7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b611b516109b3565b73ffffffffffffffffffffffffffffffffffffffff16611b6f611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90614411565b60405180910390fd5b611bce8161276e565b50565b600061016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a46b1a884846040518363ffffffff1660e01b8152600401611c31929190614ffe565b60206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c819190615027565b905092915050565b611c916109b3565b73ffffffffffffffffffffffffffffffffffffffff16611caf611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90614411565b60405180910390fd5b611d0e816127f6565b50565b611d196109b3565b73ffffffffffffffffffffffffffffffffffffffff16611d37611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8490614411565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806101f860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611e59611679565b611e616118ff565b61016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e539e8c856040518263ffffffff1660e01b8152600401611ebd919061367d565b60206040518083038186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190615027565b611f179190615054565b611f2191906150dd565b9050919050565b61016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b611fec611679565b81111561202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906151a6565b60405180910390fd5b600061019454905081610194819055507f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997818360405161206f9291906151c6565b60405180910390a15050565b60008060008073__$8bd22aa76f0d91428cab59098dc61bbe63$__631075c4d46101f960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a6040518563ffffffff1660e01b81526004016120e1949392919061540e565b60006040518083038186803b1580156120f957600080fd5b505af415801561210d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906121369190615512565b935093509350935060006101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016121a29493929190615627565b602060405180830381600087803b1580156121bc57600080fd5b505af11580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f4919061569f565b90508061222d576040517f50e006fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050565b600081600001519050919050565b600061225a61225461283b565b8361287b565b9050919050565b6000806000612272878787876128ae565b9150915061227f816129bb565b8192505050949350505050565b600061229a85858585612b90565b9050949350505050565b60008061012f60008481526020019081526020016000209050806002015481600101546122d191906156cc565b6122e26122dd85610cd7565b611e4f565b1115915050919050565b60008061012f600084815260200190815260200160002090508060000154816001015411915050919050565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360fd548260405161234b9291906151c6565b60405180910390a18060fd8190555050565b600080826000015167ffffffffffffffff16149050919050565b600067ffffffffffffffff80168211156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90615794565b60405180910390fd5b819050919050565b808260000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600061240830611f4f565b15905090565b600060019054906101000a900460ff1661245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490615826565b60405180910390fd5b61246e81612469610fb2565b612ca9565b61247781612d24565b50565b600060019054906101000a900460ff166124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090615826565b60405180910390fd5b6124d4838383612d8d565b505050565b600060019054906101000a900460ff16612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90615826565b60405180910390fd5b565b600060019054906101000a900460ff16612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257090615826565b60405180910390fd5b61258281612dfc565b50565b600060019054906101000a900460ff166125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb90615826565b60405180910390fd5b6125dd81612e90565b50565b600060019054906101000a900460ff1661262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690615826565b60405180910390fd5b61263881612eeb565b50565b600060ff54905090565b60006126bb61265383612f46565b6126ac6101c760008681526020019081526020016000206040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff16612fb4565b9050919050565b60606126e8848484604051806060016040528060298152602001615f9860299139612fce565b90509392505050565b7f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc26101c660009054906101000a900467ffffffffffffffff1682604051612739929190615846565b60405180910390a1806101c660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600081116127b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a8906158e1565b60405180910390fd5b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e882860fe54826040516127e49291906151c6565b60405180910390a18060fe8190555050565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546160ff54826040516128299291906151c6565b60405180910390a18060ff8190555050565b60006128767f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6128696130e2565b6128716130ec565b6130f6565b905090565b60008282604051602001612890929190615979565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156128e95760006003915091506129b2565b601b8560ff16141580156129015750601c8560ff1614155b156129135760006004915091506129b2565b60006001878787876040516000815260200160405260405161293894939291906159b0565b6020604051602081039080840390855afa15801561295a573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129a9576000600192509250506129b2565b80600092509250505b94509492505050565b600060048111156129cf576129ce613db8565b5b8160048111156129e2576129e1613db8565b5b14156129ed57612b8d565b60016004811115612a0157612a00613db8565b5b816004811115612a1457612a13613db8565b5b1415612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90615a41565b60405180910390fd5b60026004811115612a6957612a68613db8565b5b816004811115612a7c57612a7b613db8565b5b1415612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab490615aad565b60405180910390fd5b60036004811115612ad157612ad0613db8565b5b816004811115612ae457612ae3613db8565b5b1415612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90615b3f565b60405180910390fd5b600480811115612b3857612b37613db8565b5b816004811115612b4b57612b4a613db8565b5b1415612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390615bd1565b60405180910390fd5b5b50565b600080612b9f86868686613130565b905060006101c760008881526020019081526020016000209050612bff816040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505061235d565b8015612c105750612c0f876122a4565b5b15612c9c576000612c1f610d45565b612c2843612377565b612c329190614881565b9050612c3d88611919565b8167ffffffffffffffff161115612c8757877f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51182604051612c7e9190613ce9565b60405180910390a25b612c9a81836123ce90919063ffffffff16565b505b8192505050949350505050565b600060019054906101000a900460ff16612cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cef90615826565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b600060019054906101000a900460ff16612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90615826565b60405180910390fd5b8060cb9080519060200190612d899291906134f2565b5050565b600060019054906101000a900460ff16612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615826565b60405180910390fd5b612de583612318565b612dee8261276e565b612df7816127f6565b505050565b600060019054906101000a900460ff16612e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4290615826565b60405180910390fd5b8061016160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff16612edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed690615826565b60405180910390fd5b612ee881611fe4565b50565b600060019054906101000a900460ff16612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3190615826565b60405180910390fd5b612f43816126f1565b50565b6000612fa360cc60008481526020019081526020016000206001016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff169050919050565b600081831015612fc45781612fc6565b825b905092915050565b606082471015613013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300a90615c63565b60405180910390fd5b61301c85611f4f565b61305b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305290615ccf565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516130849190615d2b565b60006040518083038185875af1925050503d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b50915091506130d6828286613284565b92505050949350505050565b6000606554905090565b6000606654905090565b60008383834630604051602001613111959493929190615d42565b6040516020818303038152906040528051906020012090509392505050565b60008060cc600087815260200190815260200160002090506001600781111561315c5761315b613db8565b5b61316587610df8565b600781111561317757613176613db8565b5b146131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ae90615e07565b60405180910390fd5b600061321586613206846000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff16611bd1565b9050613223878787846132eb565b8573ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48887848860405161326f9493929190615e27565b60405180910390a28092505050949350505050565b60608315613294578290506132e4565b6000835111156132a75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132db919061378a565b60405180910390fd5b9392505050565b600061012f600086815260200190815260200160002090508060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615ee5565b60405180910390fd5b60018160030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006002811115613400576133ff613db8565b5b60ff168360ff16141561342d578181600001600082825461342191906156cc565b925050819055506134eb565b6001600281111561344157613440613db8565b5b60ff168360ff16141561346e578181600101600082825461346291906156cc565b925050819055506134ea565b60028081111561348157613480613db8565b5b60ff168360ff1614156134ae57818160020160008282546134a291906156cc565b925050819055506134e9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e090615f77565b60405180910390fd5b5b5b5050505050565b8280546134fe90614460565b90600052602060002090601f0160209004810192826135205760008555613567565b82601f1061353957805160ff1916838001178555613567565b82800160010185558215613567579182015b8281111561356657825182559160200191906001019061354b565b5b5090506135749190613578565b5090565b5b80821115613591576000816000905550600101613579565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135de816135a9565b81146135e957600080fd5b50565b6000813590506135fb816135d5565b92915050565b6000602082840312156136175761361661359f565b5b6000613625848285016135ec565b91505092915050565b60008115159050919050565b6136438161362e565b82525050565b600060208201905061365e600083018461363a565b92915050565b6000819050919050565b61367781613664565b82525050565b6000602082019050613692600083018461366e565b92915050565b6136a181613664565b81146136ac57600080fd5b50565b6000813590506136be81613698565b92915050565b6000602082840312156136da576136d961359f565b5b60006136e8848285016136af565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561372b578082015181840152602081019050613710565b8381111561373a576000848401525b50505050565b6000601f19601f8301169050919050565b600061375c826136f1565b61376681856136fc565b935061377681856020860161370d565b61377f81613740565b840191505092915050565b600060208201905081810360008301526137a48184613751565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6137e982613740565b810181811067ffffffffffffffff82111715613808576138076137b1565b5b80604052505050565b600061381b613595565b905061382782826137e0565b919050565b600067ffffffffffffffff821115613847576138466137b1565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138888261385d565b9050919050565b6138988161387d565b81146138a357600080fd5b50565b6000813590506138b58161388f565b92915050565b60006138ce6138c98461382c565b613811565b905080838252602082019050602084028301858111156138f1576138f0613858565b5b835b8181101561391a578061390688826138a6565b8452602084019350506020810190506138f3565b5050509392505050565b600082601f830112613939576139386137ac565b5b81356139498482602086016138bb565b91505092915050565b600067ffffffffffffffff82111561396d5761396c6137b1565b5b602082029050602081019050919050565b600061399161398c84613952565b613811565b905080838252602082019050602084028301858111156139b4576139b3613858565b5b835b818110156139dd57806139c988826136af565b8452602084019350506020810190506139b6565b5050509392505050565b600082601f8301126139fc576139fb6137ac565b5b8135613a0c84826020860161397e565b91505092915050565b600067ffffffffffffffff821115613a3057613a2f6137b1565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff821115613a6157613a606137b1565b5b613a6a82613740565b9050602081019050919050565b82818337600083830152505050565b6000613a99613a9484613a46565b613811565b905082815260208101848484011115613ab557613ab4613a41565b5b613ac0848285613a77565b509392505050565b600082601f830112613add57613adc6137ac565b5b8135613aed848260208601613a86565b91505092915050565b6000613b09613b0484613a15565b613811565b90508083825260208201905060208402830185811115613b2c57613b2b613858565b5b835b81811015613b7357803567ffffffffffffffff811115613b5157613b506137ac565b5b808601613b5e8982613ac8565b85526020850194505050602081019050613b2e565b5050509392505050565b600082601f830112613b9257613b916137ac565b5b8135613ba2848260208601613af6565b91505092915050565b6000819050919050565b613bbe81613bab565b8114613bc957600080fd5b50565b600081359050613bdb81613bb5565b92915050565b60008060008060808587031215613bfb57613bfa61359f565b5b600085013567ffffffffffffffff811115613c1957613c186135a4565b5b613c2587828801613924565b945050602085013567ffffffffffffffff811115613c4657613c456135a4565b5b613c52878288016139e7565b935050604085013567ffffffffffffffff811115613c7357613c726135a4565b5b613c7f87828801613b7d565b9250506060613c9087828801613bcc565b91505092959194509250565b613ca58161387d565b82525050565b6000602082019050613cc06000830184613c9c565b92915050565b600067ffffffffffffffff82169050919050565b613ce381613cc6565b82525050565b6000602082019050613cfe6000830184613cda565b92915050565b600060ff82169050919050565b613d1a81613d04565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b600080600080600060a08688031215613d5957613d5861359f565b5b6000613d67888289016136af565b9550506020613d7888828901613d28565b9450506040613d8988828901613d28565b9350506060613d9a88828901613bcc565b9250506080613dab88828901613bcc565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60088110613df857613df7613db8565b5b50565b6000819050613e0982613de7565b919050565b6000613e1982613dfb565b9050919050565b613e2981613e0e565b82525050565b6000602082019050613e446000830184613e20565b92915050565b60008060408385031215613e6157613e6061359f565b5b6000613e6f858286016136af565b9250506020613e80858286016138a6565b9150509250929050565b6000606082019050613e9f600083018661366e565b613eac602083018561366e565b613eb9604083018461366e565b949350505050565b60008060408385031215613ed857613ed761359f565b5b6000613ee6858286016136af565b9250506020613ef785828601613d28565b9150509250929050565b600060208284031215613f1757613f1661359f565b5b6000613f25848285016138a6565b91505092915050565b600080fd5b60008083601f840112613f4957613f486137ac565b5b8235905067ffffffffffffffff811115613f6657613f65613f2e565b5b602083019150836001820283011115613f8257613f81613858565b5b9250929050565b60008060008060608587031215613fa357613fa261359f565b5b6000613fb1878288016136af565b9450506020613fc287828801613d28565b935050604085013567ffffffffffffffff811115613fe357613fe26135a4565b5b613fef87828801613f33565b925092505092959194509250565b600067ffffffffffffffff821115614018576140176137b1565b5b61402182613740565b9050602081019050919050565b600061404161403c84613ffd565b613811565b90508281526020810184848401111561405d5761405c613a41565b5b614068848285613a77565b509392505050565b600082601f830112614085576140846137ac565b5b813561409584826020860161402e565b91505092915050565b600080600080608085870312156140b8576140b761359f565b5b600085013567ffffffffffffffff8111156140d6576140d56135a4565b5b6140e287828801613924565b945050602085013567ffffffffffffffff811115614103576141026135a4565b5b61410f878288016139e7565b935050604085013567ffffffffffffffff8111156141305761412f6135a4565b5b61413c87828801613b7d565b925050606085013567ffffffffffffffff81111561415d5761415c6135a4565b5b61416987828801614070565b91505092959194509250565b60006020828403121561418b5761418a61359f565b5b600082013567ffffffffffffffff8111156141a9576141a86135a4565b5b6141b584828501613ac8565b91505092915050565b60008083601f8401126141d4576141d36137ac565b5b8235905067ffffffffffffffff8111156141f1576141f0613f2e565b5b60208301915083600182028301111561420d5761420c613858565b5b9250929050565b6000806000806060858703121561422e5761422d61359f565b5b600061423c878288016138a6565b945050602061424d878288016136af565b935050604085013567ffffffffffffffff81111561426e5761426d6135a4565b5b61427a878288016141be565b925092505092959194509250565b61429181613cc6565b811461429c57600080fd5b50565b6000813590506142ae81614288565b92915050565b6000602082840312156142ca576142c961359f565b5b60006142d88482850161429f565b91505092915050565b6142ea81613bab565b82525050565b600060208201905061430560008301846142e1565b92915050565b600080604083850312156143225761432161359f565b5b6000614330858286016138a6565b9250506020614341858286016136af565b9150509250929050565b6000819050919050565b600061437061436b6143668461385d565b61434b565b61385d565b9050919050565b600061438282614355565b9050919050565b600061439482614377565b9050919050565b6143a481614389565b82525050565b60006020820190506143bf600083018461439b565b92915050565b7f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000600082015250565b60006143fb6018836136fc565b9150614406826143c5565b602082019050919050565b6000602082019050818103600083015261442a816143ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447857607f821691505b6020821081141561448c5761448b614431565b5b50919050565b7f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560008201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b60006144ee6021836136fc565b91506144f982614492565b604082019050919050565b6000602082019050818103600083015261451d816144e1565b9050919050565b61452d81613d04565b82525050565b600060608201905061454860008301866142e1565b614555602083018561366e565b6145626040830184614524565b949350505050565b7f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000600082015250565b60006145a0601d836136fc565b91506145ab8261456a565b602082019050919050565b600060208201905081810360008301526145cf81614593565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061461082613664565b915061461b83613664565b92508282101561462e5761462d6145d6565b5b828203905092915050565b7f476f7665726e6f72436f6d7061746962696c697479427261766f3a2070726f7060008201527f6f73657220766f7465732062656c6f772070726f706f73616c2074687265736860208201527f6f6c640000000000000000000000000000000000000000000000000000000000604082015250565b60006146bb6043836136fc565b91506146c682614639565b606082019050919050565b600060208201905081810360008301526146ea816146ae565b9050919050565b7f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b600061474d6021836136fc565b9150614758826146f1565b604082019050919050565b6000602082019050818103600083015261477c81614740565b9050919050565b7f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000600082015250565b60006147b96018836136fc565b91506147c482614783565b602082019050919050565b600060208201905081810360008301526147e8816147ac565b9050919050565b7f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061484b6021836136fc565b9150614856826147ef565b604082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b600061488c82613cc6565b915061489783613cc6565b92508267ffffffffffffffff038211156148b4576148b36145d6565b5b828201905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148f48161387d565b82525050565b600061490683836148eb565b60208301905092915050565b6000602082019050919050565b600061492a826148bf565b61493481856148ca565b935061493f836148db565b8060005b8381101561497057815161495788826148fa565b975061496283614912565b925050600181019050614943565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b281613664565b82525050565b60006149c483836149a9565b60208301905092915050565b6000602082019050919050565b60006149e88261497d565b6149f28185614988565b93506149fd83614999565b8060005b83811015614a2e578151614a1588826149b8565b9750614a20836149d0565b925050600181019050614a01565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000614a83826136f1565b614a8d8185614a67565b9350614a9d81856020860161370d565b614aa681613740565b840191505092915050565b6000614abd8383614a78565b905092915050565b6000602082019050919050565b6000614add82614a3b565b614ae78185614a46565b935083602082028501614af985614a57565b8060005b85811015614b355784840389528151614b168582614ab1565b9450614b2183614ac5565b925060208a01995050600181019050614afd565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000614b9a82614b73565b614ba48185614b7e565b9350614bb481856020860161370d565b614bbd81613740565b840191505092915050565b6000614bd48383614b8f565b905092915050565b6000602082019050919050565b6000614bf482614b47565b614bfe8185614b52565b935083602082028501614c1085614b63565b8060005b85811015614c4c5784840389528151614c2d8582614bc8565b9450614c3883614bdc565b925060208a01995050600181019050614c14565b50829750879550505050505092915050565b6000614c79614c74614c6f84613cc6565b61434b565b613664565b9050919050565b614c8981614c5e565b82525050565b600061012082019050614ca5600083018c61366e565b614cb2602083018b613c9c565b8181036040830152614cc4818a61491f565b90508181036060830152614cd881896149dd565b90508181036080830152614cec8188614ad2565b905081810360a0830152614d008187614be9565b9050614d0f60c0830186614c80565b614d1c60e0830185614c80565b818103610100830152614d2f8184613751565b90509a9950505050505050505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614d9b602e836136fc565b9150614da682614d3f565b604082019050919050565b60006020820190508181036000830152614dca81614d8e565b9050919050565b6000614ddc8261385d565b9050919050565b614dec81614dd1565b8114614df757600080fd5b50565b600081519050614e0981614de3565b92915050565b6000614e22614e1d84613ffd565b613811565b905082815260208101848484011115614e3e57614e3d613a41565b5b614e4984828561370d565b509392505050565b600082601f830112614e6657614e656137ac565b5b8151614e76848260208601614e0f565b91505092915050565b600081519050614e8e81613698565b92915050565b600081519050614ea381614288565b92915050565b6000806000806000806000806000806101408b8d031215614ecd57614ecc61359f565b5b6000614edb8d828e01614dfa565b9a50506020614eec8d828e01614dfa565b9950506040614efd8d828e01614dfa565b9850506060614f0e8d828e01614dfa565b97505060808b015167ffffffffffffffff811115614f2f57614f2e6135a4565b5b614f3b8d828e01614e51565b96505060a0614f4c8d828e01614e7f565b95505060c0614f5d8d828e01614e7f565b94505060e0614f6e8d828e01614e7f565b935050610100614f808d828e01614e7f565b925050610120614f928d828e01614e94565b9150509295989b9194979a5092959850565b60006080820190508181036000830152614fbe818761491f565b90508181036020830152614fd281866149dd565b90508181036040830152614fe68185614be9565b9050614ff560608301846142e1565b95945050505050565b60006040820190506150136000830185613c9c565b615020602083018461366e565b9392505050565b60006020828403121561503d5761503c61359f565b5b600061504b84828501614e7f565b91505092915050565b600061505f82613664565b915061506a83613664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150a3576150a26145d6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006150e882613664565b91506150f383613664565b925082615103576151026150ae565b5b828204905092915050565b7f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60008201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160208201527f746f720000000000000000000000000000000000000000000000000000000000604082015250565b60006151906043836136fc565b915061519b8261510e565b606082019050919050565b600060208201905081810360008301526151bf81615183565b9050919050565b60006040820190506151db600083018561366e565b6151e8602083018461366e565b9392505050565b6151f88161387d565b82525050565b600082825260208201905092915050565b6152188161387d565b82525050565b600061522a838361520f565b60208301905092915050565b6000615241826148bf565b61524b81856151fe565b9350615256836148db565b8060005b8381101561528757815161526e888261521e565b975061527983614912565b92505060018101905061525a565b5085935050505092915050565b600082825260208201905092915050565b6152ae81613664565b82525050565b60006152c083836152a5565b60208301905092915050565b60006152d78261497d565b6152e18185615294565b93506152ec83614999565b8060005b8381101561531d57815161530488826152b4565b975061530f836149d0565b9250506001810190506152f0565b5085935050505092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061535782614b73565b615361818561533b565b935061537181856020860161370d565b61537a81613740565b840191505092915050565b6000615391838361534c565b905092915050565b60006153a482614b47565b6153ae818561532a565b9350836020820285016153c085614b63565b8060005b858110156153fc57848403895281516153dd8582615385565b94506153e883614bdc565b925060208a019950506001810190506153c4565b50829750879550505050505092915050565b600060808201905061542360008301876151ef565b81810360208301526154358186615236565b9050818103604083015261544981856152cc565b9050818103606083015261545d8184615399565b905095945050505050565b6000815190506154778161388f565b92915050565b600061549061548b84613a46565b613811565b9050828152602081018484840111156154ac576154ab613a41565b5b6154b784828561370d565b509392505050565b600082601f8301126154d4576154d36137ac565b5b81516154e484826020860161547d565b91505092915050565b600281106154fa57600080fd5b50565b60008151905061550c816154ed565b92915050565b6000806000806080858703121561552c5761552b61359f565b5b600061553a87828801615468565b945050602061554b87828801614e7f565b935050604085015167ffffffffffffffff81111561556c5761556b6135a4565b5b615578878288016154bf565b9250506060615589878288016154fd565b91505092959194509250565b600082825260208201905092915050565b60006155b182614b73565b6155bb8185615595565b93506155cb81856020860161370d565b6155d481613740565b840191505092915050565b600281106155f0576155ef613db8565b5b50565b6000819050615601826155df565b919050565b6000615611826155f3565b9050919050565b61562181615606565b82525050565b600060808201905061563c6000830187613c9c565b615649602083018661366e565b818103604083015261565b81856155a6565b905061566a6060830184615618565b95945050505050565b61567c8161362e565b811461568757600080fd5b50565b60008151905061569981615673565b92915050565b6000602082840312156156b5576156b461359f565b5b60006156c38482850161568a565b91505092915050565b60006156d782613664565b91506156e283613664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615717576157166145d6565b5b828201905092915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203660008201527f3420626974730000000000000000000000000000000000000000000000000000602082015250565b600061577e6026836136fc565b915061578982615722565b604082019050919050565b600060208201905081810360008301526157ad81615771565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000615810602b836136fc565b915061581b826157b4565b604082019050919050565b6000602082019050818103600083015261583f81615803565b9050919050565b600060408201905061585b6000830185613cda565b6158686020830184613cda565b9392505050565b7f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060008201527f746f6f206c6f7700000000000000000000000000000000000000000000000000602082015250565b60006158cb6027836136fc565b91506158d68261586f565b604082019050919050565b600060208201905081810360008301526158fa816158be565b9050919050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615942600283615901565b915061594d8261590c565b600282019050919050565b6000819050919050565b61597361596e82613bab565b615958565b82525050565b600061598482615935565b91506159908285615962565b6020820191506159a08284615962565b6020820191508190509392505050565b60006080820190506159c560008301876142e1565b6159d26020830186614524565b6159df60408301856142e1565b6159ec60608301846142e1565b95945050505050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000615a2b6018836136fc565b9150615a36826159f5565b602082019050919050565b60006020820190508181036000830152615a5a81615a1e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000615a97601f836136fc565b9150615aa282615a61565b602082019050919050565b60006020820190508181036000830152615ac681615a8a565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b296022836136fc565b9150615b3482615acd565b604082019050919050565b60006020820190508181036000830152615b5881615b1c565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615bbb6022836136fc565b9150615bc682615b5f565b604082019050919050565b60006020820190508181036000830152615bea81615bae565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000615c4d6026836136fc565b9150615c5882615bf1565b604082019050919050565b60006020820190508181036000830152615c7c81615c40565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615cb9601d836136fc565b9150615cc482615c83565b602082019050919050565b60006020820190508181036000830152615ce881615cac565b9050919050565b600081905092915050565b6000615d0582614b73565b615d0f8185615cef565b9350615d1f81856020860161370d565b80840191505092915050565b6000615d378284615cfa565b915081905092915050565b600060a082019050615d5760008301886142e1565b615d6460208301876142e1565b615d7160408301866142e1565b615d7e606083018561366e565b615d8b6080830184613c9c565b9695505050505050565b7f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460008201527f6976650000000000000000000000000000000000000000000000000000000000602082015250565b6000615df16023836136fc565b9150615dfc82615d95565b604082019050919050565b60006020820190508181036000830152615e2081615de4565b9050919050565b6000608082019050615e3c600083018761366e565b615e496020830186614524565b615e56604083018561366e565b8181036060830152615e688184613751565b905095945050505050565b7f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160008201527f6479206361737400000000000000000000000000000000000000000000000000602082015250565b6000615ecf6027836136fc565b9150615eda82615e73565b604082019050919050565b60006020820190508181036000830152615efe81615ec2565b9050919050565b7f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160008201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000602082015250565b6000615f616035836136fc565b9150615f6c82615f05565b604082019050919050565b60006020820190508181036000830152615f9081615f54565b905091905056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220cfb28ace4cf869c04c43b8d5176b287dc24425a84f89093c4d159ffb8dd1c00b64736f6c63430008090033", - "deployedBytecode": "0x6080604052600436106102295760003560e01c80638b95eccd11610123578063d07f91e9116100ab578063eb9019d41161006f578063eb9019d4146108bc578063ece40cc1146108f9578063f2fde38b14610922578063f8ce560a1461094b578063fc0c546a146109885761026f565b8063d07f91e9146107e9578063d4b8399214610812578063dd4e2ba51461083d578063deaaa7cc14610868578063ea0217cf146108935761026f565b8063a7713a70116100f2578063a7713a70146106f0578063b58131b01461071b578063c01f9e3714610746578063c28bc2fa14610783578063c59057e4146107ac5761026f565b80638b95eccd146106485780638da5cb5b1461067157806397c3d3341461069c578063a4f9edbf146106c75761026f565b80633bccf4fd116101b15780635678138811610175578063567813881461053f57806370b0f6601461057c578063776d1a01146105a55780637b3c71d3146105ce5780637d5e81e21461060b5761026f565b80633bccf4fd1461041e5780633e4f49e61461045b5780634385963214610498578063544ffc9c146104d557806354fd4d50146105145761026f565b80632656227d116101f85780632656227d14610330578063294402cc146103605780632d63f6931461038b57806332b8113e146103c85780633932abb1146103f35761026f565b806301ffc9a71461027457806302a251a3146102b157806306f3f9e6146102dc57806306fdde03146103055761026f565b3661026f573073ffffffffffffffffffffffffffffffffffffffff1661024d6109b3565b73ffffffffffffffffffffffffffffffffffffffff161461026d57600080fd5b005b600080fd5b34801561028057600080fd5b5061029b60048036038101906102969190613601565b6109de565b6040516102a89190613649565b60405180910390f35b3480156102bd57600080fd5b506102c6610a58565b6040516102d3919061367d565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe91906136c4565b610a62565b005b34801561031157600080fd5b5061031a610aea565b604051610327919061378a565b60405180910390f35b61034a60048036038101906103459190613be1565b610b7c565b604051610357919061367d565b60405180910390f35b34801561036c57600080fd5b50610375610cb0565b6040516103829190613cab565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906136c4565b610cd7565b6040516103bf919061367d565b60405180910390f35b3480156103d457600080fd5b506103dd610d45565b6040516103ea9190613ce9565b60405180910390f35b3480156103ff57600080fd5b50610408610d64565b604051610415919061367d565b60405180910390f35b34801561042a57600080fd5b5061044560048036038101906104409190613d3d565b610d6e565b604051610452919061367d565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d91906136c4565b610df8565b60405161048f9190613e2f565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613e4a565b610f0d565b6040516104cc9190613649565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906136c4565b610f79565b60405161050b93929190613e8a565b60405180910390f35b34801561052057600080fd5b50610529610fb2565b604051610536919061378a565b60405180910390f35b34801561054b57600080fd5b5061056660048036038101906105619190613ec1565b610fef565b604051610573919061367d565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e91906136c4565b611020565b005b3480156105b157600080fd5b506105cc60048036038101906105c79190613f01565b6110a8565b005b3480156105da57600080fd5b506105f560048036038101906105f09190613f89565b6111e6565b604051610602919061367d565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d919061409e565b61124e565b60405161063f919061367d565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190613f01565b61154e565b005b34801561067d57600080fd5b50610686611652565b6040516106939190613cab565b60405180910390f35b3480156106a857600080fd5b506106b1611679565b6040516106be919061367d565b60405180910390f35b3480156106d357600080fd5b506106ee60048036038101906106e99190614175565b611682565b005b3480156106fc57600080fd5b506107056118ff565b604051610712919061367d565b60405180910390f35b34801561072757600080fd5b5061073061190a565b60405161073d919061367d565b60405180910390f35b34801561075257600080fd5b5061076d600480360381019061076891906136c4565b611919565b60405161077a919061367d565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a59190614214565b61192b565b005b3480156107b857600080fd5b506107d360048036038101906107ce9190613be1565b6119fd565b6040516107e0919061367d565b60405180910390f35b3480156107f557600080fd5b50610810600480360381019061080b91906142b4565b611a39565b005b34801561081e57600080fd5b50610827611ac1565b6040516108349190613cab565b60405180910390f35b34801561084957600080fd5b50610852611ae8565b60405161085f919061378a565b60405180910390f35b34801561087457600080fd5b5061087d611b25565b60405161088a91906142f0565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b591906136c4565b611b49565b005b3480156108c857600080fd5b506108e360048036038101906108de919061430b565b611bd1565b6040516108f0919061367d565b60405180910390f35b34801561090557600080fd5b50610920600480360381019061091b91906136c4565b611c89565b005b34801561092e57600080fd5b5061094960048036038101906109449190613f01565b611d11565b005b34801561095757600080fd5b50610972600480360381019061096d91906136c4565b611e4f565b60405161097f919061367d565b60405180910390f35b34801561099457600080fd5b5061099d611f28565b6040516109aa91906143aa565b60405180910390f35b60006101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60007fbf26d897000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a515750610a5082611f72565b5b9050919050565b600060fe54905090565b610a6a6109b3565b73ffffffffffffffffffffffffffffffffffffffff16610a88611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad590614411565b60405180910390fd5b610ae781611fe4565b50565b606060cb8054610af990614460565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2590614460565b8015610b725780601f10610b4757610100808354040283529160200191610b72565b820191906000526020600020905b815481529060010190602001808311610b5557829003601f168201915b5050505050905090565b600080610b8b868686866119fd565b90506000610b9882610df8565b905060046007811115610bae57610bad613db8565b5b816007811115610bc157610bc0613db8565b5b1480610bf1575060056007811115610bdc57610bdb613db8565b5b816007811115610bef57610bee613db8565b5b145b610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790614504565b60405180910390fd5b600160cc600084815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051610c8e919061367d565b60405180910390a1610ca3828888888861207b565b8192505050949350505050565b6101f960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d3460cc60008481526020019081526020016000206000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff169050919050565b60006101c660009054906101000a900467ffffffffffffffff16905090565b600060fd54905090565b600080610dcf610dc77f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f8989604051602001610dac93929190614533565b60405160208183030381529060405280519060200120612247565b868686612261565b9050610dec8782886040518060200160405280600081525061228c565b91505095945050505050565b60008060cc600084815260200190815260200160002090508060020160009054906101000a900460ff1615610e31576007915050610f08565b8060020160019054906101000a900460ff1615610e52576002915050610f08565b6000610e5d84610cd7565b90506000811415610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a906145b6565b60405180910390fd5b438110610eb557600092505050610f08565b6000610ec085611919565b9050438110610ed55760019350505050610f08565b610ede856122a4565b8015610eef5750610eee856122ec565b5b15610f005760049350505050610f08565b600393505050505b919050565b600061012f600084815260200190815260200160002060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060008061012f60008681526020019081526020016000209050806000015481600101548260020154935093509350509193909250565b60606040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250905090565b600080610ffa611fdc565b90506110178482856040518060200160405280600081525061228c565b91505092915050565b6110286109b3565b73ffffffffffffffffffffffffffffffffffffffff16611046611fdc565b73ffffffffffffffffffffffffffffffffffffffff161461109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109390614411565b60405180910390fd5b6110a581612318565b50565b6110b06109b3565b73ffffffffffffffffffffffffffffffffffffffff166110ce611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90614411565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a3806101fa60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806111f1611fdc565b905061124386828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061228c565b915050949350505050565b600061125861190a565b61126e336001436112699190614605565b611bd1565b10156112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a6906146d1565b60405180910390fd5b60006112c486868686805190602001206119fd565b9050845186511461130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190614763565b60405180910390fd5b835186511461134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590614763565b60405180910390fd5b6000865111611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906147cf565b60405180910390fd5b600060cc600083815260200190815260200160002090506113f2816000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505061235d565b611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890614861565b60405180910390fd5b600061144361143e610d64565b612377565b61144c43612377565b6114569190614881565b9050600061146a611465610a58565b612377565b826114759190614881565b905061148d82846000016123ce90919063ffffffff16565b6114a381846001016123ce90919063ffffffff16565b7f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e0846114cd611fdc565b8b8b8d5167ffffffffffffffff8111156114ea576114e96137b1565b5b60405190808252806020026020018201604052801561151d57816020015b60608152602001906001900390816115085790505b508c88888e60405161153799989796959493929190614c8f565b60405180910390a183945050505050949350505050565b6115566109b3565b73ffffffffffffffffffffffffffffffffffffffff16611574611fdc565b73ffffffffffffffffffffffffffffffffffffffff16146115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c190614411565b60405180910390fd5b806101f960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe4d105ea08807ad5b7301b7bf6cb385189ef18304cef1417cb2f76077b81413160405160405180910390a250565b6101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006064905090565b600060019054906101000a900460ff166116aa5760008054906101000a900460ff16156116b3565b6116b26123fd565b5b6116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990614db1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611742576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6000806000806000806000806000808b8060200190518101906117659190614ea9565b9950995099509950995099509950995099509950896101f860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550886101fa60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550876101f960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506118488661240e565b61185385858561247a565b61185b6124d9565b6118648761252a565b61186d82612585565b611876816125e0565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f636e209fff6b662c507f20ad7b6e82c9aed68a65e25693848ff96d0b1614c66060405160405180910390a35050505050505050505080156118fb5760008060016101000a81548160ff0219169083151502179055505b5050565b600061019454905090565b600061191461263b565b905090565b600061192482612645565b9050919050565b6119336109b3565b73ffffffffffffffffffffffffffffffffffffffff16611951611fdc565b73ffffffffffffffffffffffffffffffffffffffff16146119a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199e90614411565b60405180910390fd5b6119f68483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050856126c2565b5050505050565b600084848484604051602001611a169493929190614fa4565b6040516020818303038152906040528051906020012060001c9050949350505050565b611a416109b3565b73ffffffffffffffffffffffffffffffffffffffff16611a5f611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90614411565b60405180910390fd5b611abe816126f1565b50565b6101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280602081526020017f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e815250905090565b7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b611b516109b3565b73ffffffffffffffffffffffffffffffffffffffff16611b6f611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90614411565b60405180910390fd5b611bce8161276e565b50565b600061016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a46b1a884846040518363ffffffff1660e01b8152600401611c31929190614ffe565b60206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c819190615027565b905092915050565b611c916109b3565b73ffffffffffffffffffffffffffffffffffffffff16611caf611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90614411565b60405180910390fd5b611d0e816127f6565b50565b611d196109b3565b73ffffffffffffffffffffffffffffffffffffffff16611d37611fdc565b73ffffffffffffffffffffffffffffffffffffffff1614611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8490614411565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166101f860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806101f860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611e59611679565b611e616118ff565b61016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e539e8c856040518263ffffffff1660e01b8152600401611ebd919061367d565b60206040518083038186803b158015611ed557600080fd5b505afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190615027565b611f179190615054565b611f2191906150dd565b9050919050565b61016160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b611fec611679565b81111561202e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612025906151a6565b60405180910390fd5b600061019454905081610194819055507f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997818360405161206f9291906151c6565b60405180910390a15050565b60008060008073__$8bd22aa76f0d91428cab59098dc61bbe63$__631075c4d46101f960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a6040518563ffffffff1660e01b81526004016120e1949392919061540e565b60006040518083038186803b1580156120f957600080fd5b505af415801561210d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906121369190615512565b935093509350935060006101fa60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016121a29493929190615627565b602060405180830381600087803b1580156121bc57600080fd5b505af11580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f4919061569f565b90508061222d576040517f50e006fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050565b600081600001519050919050565b600061225a61225461283b565b8361287b565b9050919050565b6000806000612272878787876128ae565b9150915061227f816129bb565b8192505050949350505050565b600061229a85858585612b90565b9050949350505050565b60008061012f60008481526020019081526020016000209050806002015481600101546122d191906156cc565b6122e26122dd85610cd7565b611e4f565b1115915050919050565b60008061012f600084815260200190815260200160002090508060000154816001015411915050919050565b7fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a9360fd548260405161234b9291906151c6565b60405180910390a18060fd8190555050565b600080826000015167ffffffffffffffff16149050919050565b600067ffffffffffffffff80168211156123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd90615794565b60405180910390fd5b819050919050565b808260000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505050565b600061240830611f4f565b15905090565b600060019054906101000a900460ff1661245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490615826565b60405180910390fd5b61246e81612469610fb2565b612ca9565b61247781612d24565b50565b600060019054906101000a900460ff166124c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c090615826565b60405180910390fd5b6124d4838383612d8d565b505050565b600060019054906101000a900460ff16612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90615826565b60405180910390fd5b565b600060019054906101000a900460ff16612579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257090615826565b60405180910390fd5b61258281612dfc565b50565b600060019054906101000a900460ff166125d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cb90615826565b60405180910390fd5b6125dd81612e90565b50565b600060019054906101000a900460ff1661262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690615826565b60405180910390fd5b61263881612eeb565b50565b600060ff54905090565b60006126bb61265383612f46565b6126ac6101c760008681526020019081526020016000206040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff16612fb4565b9050919050565b60606126e8848484604051806060016040528060298152602001615f9860299139612fce565b90509392505050565b7f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc26101c660009054906101000a900467ffffffffffffffff1682604051612739929190615846565b60405180910390a1806101c660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600081116127b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a8906158e1565b60405180910390fd5b7f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e882860fe54826040516127e49291906151c6565b60405180910390a18060fe8190555050565b7fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc0546160ff54826040516128299291906151c6565b60405180910390a18060ff8190555050565b60006128767f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6128696130e2565b6128716130ec565b6130f6565b905090565b60008282604051602001612890929190615979565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156128e95760006003915091506129b2565b601b8560ff16141580156129015750601c8560ff1614155b156129135760006004915091506129b2565b60006001878787876040516000815260200160405260405161293894939291906159b0565b6020604051602081039080840390855afa15801561295a573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129a9576000600192509250506129b2565b80600092509250505b94509492505050565b600060048111156129cf576129ce613db8565b5b8160048111156129e2576129e1613db8565b5b14156129ed57612b8d565b60016004811115612a0157612a00613db8565b5b816004811115612a1457612a13613db8565b5b1415612a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4c90615a41565b60405180910390fd5b60026004811115612a6957612a68613db8565b5b816004811115612a7c57612a7b613db8565b5b1415612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab490615aad565b60405180910390fd5b60036004811115612ad157612ad0613db8565b5b816004811115612ae457612ae3613db8565b5b1415612b25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1c90615b3f565b60405180910390fd5b600480811115612b3857612b37613db8565b5b816004811115612b4b57612b4a613db8565b5b1415612b8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8390615bd1565b60405180910390fd5b5b50565b600080612b9f86868686613130565b905060006101c760008881526020019081526020016000209050612bff816040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505061235d565b8015612c105750612c0f876122a4565b5b15612c9c576000612c1f610d45565b612c2843612377565b612c329190614881565b9050612c3d88611919565b8167ffffffffffffffff161115612c8757877f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba51182604051612c7e9190613ce9565b60405180910390a25b612c9a81836123ce90919063ffffffff16565b505b8192505050949350505050565b600060019054906101000a900460ff16612cf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cef90615826565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b600060019054906101000a900460ff16612d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d6a90615826565b60405180910390fd5b8060cb9080519060200190612d899291906134f2565b5050565b600060019054906101000a900460ff16612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615826565b60405180910390fd5b612de583612318565b612dee8261276e565b612df7816127f6565b505050565b600060019054906101000a900460ff16612e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4290615826565b60405180910390fd5b8061016160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060019054906101000a900460ff16612edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed690615826565b60405180910390fd5b612ee881611fe4565b50565b600060019054906101000a900460ff16612f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3190615826565b60405180910390fd5b612f43816126f1565b50565b6000612fa360cc60008481526020019081526020016000206001016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff169050919050565b600081831015612fc45781612fc6565b825b905092915050565b606082471015613013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300a90615c63565b60405180910390fd5b61301c85611f4f565b61305b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305290615ccf565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516130849190615d2b565b60006040518083038185875af1925050503d80600081146130c1576040519150601f19603f3d011682016040523d82523d6000602084013e6130c6565b606091505b50915091506130d6828286613284565b92505050949350505050565b6000606554905090565b6000606654905090565b60008383834630604051602001613111959493929190615d42565b6040516020818303038152906040528051906020012090509392505050565b60008060cc600087815260200190815260200160002090506001600781111561315c5761315b613db8565b5b61316587610df8565b600781111561317757613176613db8565b5b146131b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ae90615e07565b60405180910390fd5b600061321586613206846000016040518060200160405290816000820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050612239565b67ffffffffffffffff16611bd1565b9050613223878787846132eb565b8573ffffffffffffffffffffffffffffffffffffffff167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48887848860405161326f9493929190615e27565b60405180910390a28092505050949350505050565b60608315613294578290506132e4565b6000835111156132a75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132db919061378a565b60405180910390fd5b9392505050565b600061012f600086815260200190815260200160002090508060030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338990615ee5565b60405180910390fd5b60018160030160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006002811115613400576133ff613db8565b5b60ff168360ff16141561342d578181600001600082825461342191906156cc565b925050819055506134eb565b6001600281111561344157613440613db8565b5b60ff168360ff16141561346e578181600101600082825461346291906156cc565b925050819055506134ea565b60028081111561348157613480613db8565b5b60ff168360ff1614156134ae57818160020160008282546134a291906156cc565b925050819055506134e9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e090615f77565b60405180910390fd5b5b5b5050505050565b8280546134fe90614460565b90600052602060002090601f0160209004810192826135205760008555613567565b82601f1061353957805160ff1916838001178555613567565b82800160010185558215613567579182015b8281111561356657825182559160200191906001019061354b565b5b5090506135749190613578565b5090565b5b80821115613591576000816000905550600101613579565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135de816135a9565b81146135e957600080fd5b50565b6000813590506135fb816135d5565b92915050565b6000602082840312156136175761361661359f565b5b6000613625848285016135ec565b91505092915050565b60008115159050919050565b6136438161362e565b82525050565b600060208201905061365e600083018461363a565b92915050565b6000819050919050565b61367781613664565b82525050565b6000602082019050613692600083018461366e565b92915050565b6136a181613664565b81146136ac57600080fd5b50565b6000813590506136be81613698565b92915050565b6000602082840312156136da576136d961359f565b5b60006136e8848285016136af565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561372b578082015181840152602081019050613710565b8381111561373a576000848401525b50505050565b6000601f19601f8301169050919050565b600061375c826136f1565b61376681856136fc565b935061377681856020860161370d565b61377f81613740565b840191505092915050565b600060208201905081810360008301526137a48184613751565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6137e982613740565b810181811067ffffffffffffffff82111715613808576138076137b1565b5b80604052505050565b600061381b613595565b905061382782826137e0565b919050565b600067ffffffffffffffff821115613847576138466137b1565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138888261385d565b9050919050565b6138988161387d565b81146138a357600080fd5b50565b6000813590506138b58161388f565b92915050565b60006138ce6138c98461382c565b613811565b905080838252602082019050602084028301858111156138f1576138f0613858565b5b835b8181101561391a578061390688826138a6565b8452602084019350506020810190506138f3565b5050509392505050565b600082601f830112613939576139386137ac565b5b81356139498482602086016138bb565b91505092915050565b600067ffffffffffffffff82111561396d5761396c6137b1565b5b602082029050602081019050919050565b600061399161398c84613952565b613811565b905080838252602082019050602084028301858111156139b4576139b3613858565b5b835b818110156139dd57806139c988826136af565b8452602084019350506020810190506139b6565b5050509392505050565b600082601f8301126139fc576139fb6137ac565b5b8135613a0c84826020860161397e565b91505092915050565b600067ffffffffffffffff821115613a3057613a2f6137b1565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff821115613a6157613a606137b1565b5b613a6a82613740565b9050602081019050919050565b82818337600083830152505050565b6000613a99613a9484613a46565b613811565b905082815260208101848484011115613ab557613ab4613a41565b5b613ac0848285613a77565b509392505050565b600082601f830112613add57613adc6137ac565b5b8135613aed848260208601613a86565b91505092915050565b6000613b09613b0484613a15565b613811565b90508083825260208201905060208402830185811115613b2c57613b2b613858565b5b835b81811015613b7357803567ffffffffffffffff811115613b5157613b506137ac565b5b808601613b5e8982613ac8565b85526020850194505050602081019050613b2e565b5050509392505050565b600082601f830112613b9257613b916137ac565b5b8135613ba2848260208601613af6565b91505092915050565b6000819050919050565b613bbe81613bab565b8114613bc957600080fd5b50565b600081359050613bdb81613bb5565b92915050565b60008060008060808587031215613bfb57613bfa61359f565b5b600085013567ffffffffffffffff811115613c1957613c186135a4565b5b613c2587828801613924565b945050602085013567ffffffffffffffff811115613c4657613c456135a4565b5b613c52878288016139e7565b935050604085013567ffffffffffffffff811115613c7357613c726135a4565b5b613c7f87828801613b7d565b9250506060613c9087828801613bcc565b91505092959194509250565b613ca58161387d565b82525050565b6000602082019050613cc06000830184613c9c565b92915050565b600067ffffffffffffffff82169050919050565b613ce381613cc6565b82525050565b6000602082019050613cfe6000830184613cda565b92915050565b600060ff82169050919050565b613d1a81613d04565b8114613d2557600080fd5b50565b600081359050613d3781613d11565b92915050565b600080600080600060a08688031215613d5957613d5861359f565b5b6000613d67888289016136af565b9550506020613d7888828901613d28565b9450506040613d8988828901613d28565b9350506060613d9a88828901613bcc565b9250506080613dab88828901613bcc565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60088110613df857613df7613db8565b5b50565b6000819050613e0982613de7565b919050565b6000613e1982613dfb565b9050919050565b613e2981613e0e565b82525050565b6000602082019050613e446000830184613e20565b92915050565b60008060408385031215613e6157613e6061359f565b5b6000613e6f858286016136af565b9250506020613e80858286016138a6565b9150509250929050565b6000606082019050613e9f600083018661366e565b613eac602083018561366e565b613eb9604083018461366e565b949350505050565b60008060408385031215613ed857613ed761359f565b5b6000613ee6858286016136af565b9250506020613ef785828601613d28565b9150509250929050565b600060208284031215613f1757613f1661359f565b5b6000613f25848285016138a6565b91505092915050565b600080fd5b60008083601f840112613f4957613f486137ac565b5b8235905067ffffffffffffffff811115613f6657613f65613f2e565b5b602083019150836001820283011115613f8257613f81613858565b5b9250929050565b60008060008060608587031215613fa357613fa261359f565b5b6000613fb1878288016136af565b9450506020613fc287828801613d28565b935050604085013567ffffffffffffffff811115613fe357613fe26135a4565b5b613fef87828801613f33565b925092505092959194509250565b600067ffffffffffffffff821115614018576140176137b1565b5b61402182613740565b9050602081019050919050565b600061404161403c84613ffd565b613811565b90508281526020810184848401111561405d5761405c613a41565b5b614068848285613a77565b509392505050565b600082601f830112614085576140846137ac565b5b813561409584826020860161402e565b91505092915050565b600080600080608085870312156140b8576140b761359f565b5b600085013567ffffffffffffffff8111156140d6576140d56135a4565b5b6140e287828801613924565b945050602085013567ffffffffffffffff811115614103576141026135a4565b5b61410f878288016139e7565b935050604085013567ffffffffffffffff8111156141305761412f6135a4565b5b61413c87828801613b7d565b925050606085013567ffffffffffffffff81111561415d5761415c6135a4565b5b61416987828801614070565b91505092959194509250565b60006020828403121561418b5761418a61359f565b5b600082013567ffffffffffffffff8111156141a9576141a86135a4565b5b6141b584828501613ac8565b91505092915050565b60008083601f8401126141d4576141d36137ac565b5b8235905067ffffffffffffffff8111156141f1576141f0613f2e565b5b60208301915083600182028301111561420d5761420c613858565b5b9250929050565b6000806000806060858703121561422e5761422d61359f565b5b600061423c878288016138a6565b945050602061424d878288016136af565b935050604085013567ffffffffffffffff81111561426e5761426d6135a4565b5b61427a878288016141be565b925092505092959194509250565b61429181613cc6565b811461429c57600080fd5b50565b6000813590506142ae81614288565b92915050565b6000602082840312156142ca576142c961359f565b5b60006142d88482850161429f565b91505092915050565b6142ea81613bab565b82525050565b600060208201905061430560008301846142e1565b92915050565b600080604083850312156143225761432161359f565b5b6000614330858286016138a6565b9250506020614341858286016136af565b9150509250929050565b6000819050919050565b600061437061436b6143668461385d565b61434b565b61385d565b9050919050565b600061438282614355565b9050919050565b600061439482614377565b9050919050565b6143a481614389565b82525050565b60006020820190506143bf600083018461439b565b92915050565b7f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000600082015250565b60006143fb6018836136fc565b9150614406826143c5565b602082019050919050565b6000602082019050818103600083015261442a816143ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061447857607f821691505b6020821081141561448c5761448b614431565b5b50919050565b7f476f7665726e6f723a2070726f706f73616c206e6f742073756363657373667560008201527f6c00000000000000000000000000000000000000000000000000000000000000602082015250565b60006144ee6021836136fc565b91506144f982614492565b604082019050919050565b6000602082019050818103600083015261451d816144e1565b9050919050565b61452d81613d04565b82525050565b600060608201905061454860008301866142e1565b614555602083018561366e565b6145626040830184614524565b949350505050565b7f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000600082015250565b60006145a0601d836136fc565b91506145ab8261456a565b602082019050919050565b600060208201905081810360008301526145cf81614593565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061461082613664565b915061461b83613664565b92508282101561462e5761462d6145d6565b5b828203905092915050565b7f476f7665726e6f72436f6d7061746962696c697479427261766f3a2070726f7060008201527f6f73657220766f7465732062656c6f772070726f706f73616c2074687265736860208201527f6f6c640000000000000000000000000000000000000000000000000000000000604082015250565b60006146bb6043836136fc565b91506146c682614639565b606082019050919050565b600060208201905081810360008301526146ea816146ae565b9050919050565b7f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e677460008201527f6800000000000000000000000000000000000000000000000000000000000000602082015250565b600061474d6021836136fc565b9150614758826146f1565b604082019050919050565b6000602082019050818103600083015261477c81614740565b9050919050565b7f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000600082015250565b60006147b96018836136fc565b91506147c482614783565b602082019050919050565b600060208201905081810360008301526147e8816147ac565b9050919050565b7f476f7665726e6f723a2070726f706f73616c20616c726561647920657869737460008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061484b6021836136fc565b9150614856826147ef565b604082019050919050565b6000602082019050818103600083015261487a8161483e565b9050919050565b600061488c82613cc6565b915061489783613cc6565b92508267ffffffffffffffff038211156148b4576148b36145d6565b5b828201905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148f48161387d565b82525050565b600061490683836148eb565b60208301905092915050565b6000602082019050919050565b600061492a826148bf565b61493481856148ca565b935061493f836148db565b8060005b8381101561497057815161495788826148fa565b975061496283614912565b925050600181019050614943565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149b281613664565b82525050565b60006149c483836149a9565b60208301905092915050565b6000602082019050919050565b60006149e88261497d565b6149f28185614988565b93506149fd83614999565b8060005b83811015614a2e578151614a1588826149b8565b9750614a20836149d0565b925050600181019050614a01565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000614a83826136f1565b614a8d8185614a67565b9350614a9d81856020860161370d565b614aa681613740565b840191505092915050565b6000614abd8383614a78565b905092915050565b6000602082019050919050565b6000614add82614a3b565b614ae78185614a46565b935083602082028501614af985614a57565b8060005b85811015614b355784840389528151614b168582614ab1565b9450614b2183614ac5565b925060208a01995050600181019050614afd565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000614b9a82614b73565b614ba48185614b7e565b9350614bb481856020860161370d565b614bbd81613740565b840191505092915050565b6000614bd48383614b8f565b905092915050565b6000602082019050919050565b6000614bf482614b47565b614bfe8185614b52565b935083602082028501614c1085614b63565b8060005b85811015614c4c5784840389528151614c2d8582614bc8565b9450614c3883614bdc565b925060208a01995050600181019050614c14565b50829750879550505050505092915050565b6000614c79614c74614c6f84613cc6565b61434b565b613664565b9050919050565b614c8981614c5e565b82525050565b600061012082019050614ca5600083018c61366e565b614cb2602083018b613c9c565b8181036040830152614cc4818a61491f565b90508181036060830152614cd881896149dd565b90508181036080830152614cec8188614ad2565b905081810360a0830152614d008187614be9565b9050614d0f60c0830186614c80565b614d1c60e0830185614c80565b818103610100830152614d2f8184613751565b90509a9950505050505050505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614d9b602e836136fc565b9150614da682614d3f565b604082019050919050565b60006020820190508181036000830152614dca81614d8e565b9050919050565b6000614ddc8261385d565b9050919050565b614dec81614dd1565b8114614df757600080fd5b50565b600081519050614e0981614de3565b92915050565b6000614e22614e1d84613ffd565b613811565b905082815260208101848484011115614e3e57614e3d613a41565b5b614e4984828561370d565b509392505050565b600082601f830112614e6657614e656137ac565b5b8151614e76848260208601614e0f565b91505092915050565b600081519050614e8e81613698565b92915050565b600081519050614ea381614288565b92915050565b6000806000806000806000806000806101408b8d031215614ecd57614ecc61359f565b5b6000614edb8d828e01614dfa565b9a50506020614eec8d828e01614dfa565b9950506040614efd8d828e01614dfa565b9850506060614f0e8d828e01614dfa565b97505060808b015167ffffffffffffffff811115614f2f57614f2e6135a4565b5b614f3b8d828e01614e51565b96505060a0614f4c8d828e01614e7f565b95505060c0614f5d8d828e01614e7f565b94505060e0614f6e8d828e01614e7f565b935050610100614f808d828e01614e7f565b925050610120614f928d828e01614e94565b9150509295989b9194979a5092959850565b60006080820190508181036000830152614fbe818761491f565b90508181036020830152614fd281866149dd565b90508181036040830152614fe68185614be9565b9050614ff560608301846142e1565b95945050505050565b60006040820190506150136000830185613c9c565b615020602083018461366e565b9392505050565b60006020828403121561503d5761503c61359f565b5b600061504b84828501614e7f565b91505092915050565b600061505f82613664565b915061506a83613664565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150a3576150a26145d6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006150e882613664565b91506150f383613664565b925082615103576151026150ae565b5b828204905092915050565b7f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60008201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e6160208201527f746f720000000000000000000000000000000000000000000000000000000000604082015250565b60006151906043836136fc565b915061519b8261510e565b606082019050919050565b600060208201905081810360008301526151bf81615183565b9050919050565b60006040820190506151db600083018561366e565b6151e8602083018461366e565b9392505050565b6151f88161387d565b82525050565b600082825260208201905092915050565b6152188161387d565b82525050565b600061522a838361520f565b60208301905092915050565b6000615241826148bf565b61524b81856151fe565b9350615256836148db565b8060005b8381101561528757815161526e888261521e565b975061527983614912565b92505060018101905061525a565b5085935050505092915050565b600082825260208201905092915050565b6152ae81613664565b82525050565b60006152c083836152a5565b60208301905092915050565b60006152d78261497d565b6152e18185615294565b93506152ec83614999565b8060005b8381101561531d57815161530488826152b4565b975061530f836149d0565b9250506001810190506152f0565b5085935050505092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061535782614b73565b615361818561533b565b935061537181856020860161370d565b61537a81613740565b840191505092915050565b6000615391838361534c565b905092915050565b60006153a482614b47565b6153ae818561532a565b9350836020820285016153c085614b63565b8060005b858110156153fc57848403895281516153dd8582615385565b94506153e883614bdc565b925060208a019950506001810190506153c4565b50829750879550505050505092915050565b600060808201905061542360008301876151ef565b81810360208301526154358186615236565b9050818103604083015261544981856152cc565b9050818103606083015261545d8184615399565b905095945050505050565b6000815190506154778161388f565b92915050565b600061549061548b84613a46565b613811565b9050828152602081018484840111156154ac576154ab613a41565b5b6154b784828561370d565b509392505050565b600082601f8301126154d4576154d36137ac565b5b81516154e484826020860161547d565b91505092915050565b600281106154fa57600080fd5b50565b60008151905061550c816154ed565b92915050565b6000806000806080858703121561552c5761552b61359f565b5b600061553a87828801615468565b945050602061554b87828801614e7f565b935050604085015167ffffffffffffffff81111561556c5761556b6135a4565b5b615578878288016154bf565b9250506060615589878288016154fd565b91505092959194509250565b600082825260208201905092915050565b60006155b182614b73565b6155bb8185615595565b93506155cb81856020860161370d565b6155d481613740565b840191505092915050565b600281106155f0576155ef613db8565b5b50565b6000819050615601826155df565b919050565b6000615611826155f3565b9050919050565b61562181615606565b82525050565b600060808201905061563c6000830187613c9c565b615649602083018661366e565b818103604083015261565b81856155a6565b905061566a6060830184615618565b95945050505050565b61567c8161362e565b811461568757600080fd5b50565b60008151905061569981615673565b92915050565b6000602082840312156156b5576156b461359f565b5b60006156c38482850161568a565b91505092915050565b60006156d782613664565b91506156e283613664565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615717576157166145d6565b5b828201905092915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203660008201527f3420626974730000000000000000000000000000000000000000000000000000602082015250565b600061577e6026836136fc565b915061578982615722565b604082019050919050565b600060208201905081810360008301526157ad81615771565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000615810602b836136fc565b915061581b826157b4565b604082019050919050565b6000602082019050818103600083015261583f81615803565b9050919050565b600060408201905061585b6000830185613cda565b6158686020830184613cda565b9392505050565b7f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f642060008201527f746f6f206c6f7700000000000000000000000000000000000000000000000000602082015250565b60006158cb6027836136fc565b91506158d68261586f565b604082019050919050565b600060208201905081810360008301526158fa816158be565b9050919050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000615942600283615901565b915061594d8261590c565b600282019050919050565b6000819050919050565b61597361596e82613bab565b615958565b82525050565b600061598482615935565b91506159908285615962565b6020820191506159a08284615962565b6020820191508190509392505050565b60006080820190506159c560008301876142e1565b6159d26020830186614524565b6159df60408301856142e1565b6159ec60608301846142e1565b95945050505050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000615a2b6018836136fc565b9150615a36826159f5565b602082019050919050565b60006020820190508181036000830152615a5a81615a1e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000615a97601f836136fc565b9150615aa282615a61565b602082019050919050565b60006020820190508181036000830152615ac681615a8a565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615b296022836136fc565b9150615b3482615acd565b604082019050919050565b60006020820190508181036000830152615b5881615b1c565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615bbb6022836136fc565b9150615bc682615b5f565b604082019050919050565b60006020820190508181036000830152615bea81615bae565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000615c4d6026836136fc565b9150615c5882615bf1565b604082019050919050565b60006020820190508181036000830152615c7c81615c40565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615cb9601d836136fc565b9150615cc482615c83565b602082019050919050565b60006020820190508181036000830152615ce881615cac565b9050919050565b600081905092915050565b6000615d0582614b73565b615d0f8185615cef565b9350615d1f81856020860161370d565b80840191505092915050565b6000615d378284615cfa565b915081905092915050565b600060a082019050615d5760008301886142e1565b615d6460208301876142e1565b615d7160408301866142e1565b615d7e606083018561366e565b615d8b6080830184613c9c565b9695505050505050565b7f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460008201527f6976650000000000000000000000000000000000000000000000000000000000602082015250565b6000615df16023836136fc565b9150615dfc82615d95565b604082019050919050565b60006020820190508181036000830152615e2081615de4565b9050919050565b6000608082019050615e3c600083018761366e565b615e496020830186614524565b615e56604083018561366e565b8181036060830152615e688184613751565b905095945050505050565b7f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c72656160008201527f6479206361737400000000000000000000000000000000000000000000000000602082015250565b6000615ecf6027836136fc565b9150615eda82615e73565b604082019050919050565b60006020820190508181036000830152615efe81615ec2565b9050919050565b7f476f7665726e6f72566f74696e6753696d706c653a20696e76616c696420766160008201527f6c756520666f7220656e756d20566f7465547970650000000000000000000000602082015250565b6000615f616035836136fc565b9150615f6c82615f05565b604082019050919050565b60006020820190508181036000830152615f9081615f54565b905091905056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220cfb28ace4cf869c04c43b8d5176b287dc24425a84f89093c4d159ffb8dd1c00b64736f6c63430008090033", - "linkReferences": { - "contracts/MultisendEncoder.sol": { - "MultisendEncoder": [ - { - "length": 20, - "start": 13860 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/MultisendEncoder.sol": { - "MultisendEncoder": [ - { - "length": 20, - "start": 8323 - } - ] - } - } -} diff --git a/packages/app/src/contracts/OptimisticGovernor.json b/packages/app/src/contracts/OptimisticGovernor.json deleted file mode 100644 index 2ddb0521..00000000 --- a/packages/app/src/contracts/OptimisticGovernor.json +++ /dev/null @@ -1,923 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "OptimisticGovernor", - "sourceName": "contracts/OptimisticGovernor.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_finder", - "type": "address" - }, - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_collateral", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bondAmount", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_rules", - "type": "string" - }, - { - "internalType": "bytes32", - "name": "_identifier", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "_liveness", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "OptimisticGovernorDeployed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - } - ], - "name": "ProposalDeleted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - } - ], - "name": "ProposalExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IERC20", - "name": "collateral", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "bondAmount", - "type": "uint256" - } - ], - "name": "SetBond", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IERC20", - "name": "collateral", - "type": "address" - } - ], - "name": "SetCollateral", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "escalationManager", - "type": "address" - } - ], - "name": "SetEscalationManager", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "identifier", - "type": "bytes32" - } - ], - "name": "SetIdentifier", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "liveness", - "type": "uint64" - } - ], - "name": "SetLiveness", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "rules", - "type": "string" - } - ], - "name": "SetRules", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "transactionIndex", - "type": "uint256" - } - ], - "name": "TransactionExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "proposer", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "proposalTime", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - }, - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct OptimisticGovernor.Transaction[]", - "name": "transactions", - "type": "tuple[]" - }, - { - "internalType": "uint256", - "name": "requestTime", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct OptimisticGovernor.Proposal", - "name": "proposal", - "type": "tuple" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "explanation", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "string", - "name": "rules", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "challengeWindowEnds", - "type": "uint256" - } - ], - "name": "TransactionsProposed", - "type": "event" - }, - { - "inputs": [], - "name": "EXPLANATION_KEY", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PROPOSAL_HASH_KEY", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RULES_KEY", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - } - ], - "name": "assertionDisputedCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "assertionIds", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "assertionId", - "type": "bytes32" - }, - { - "internalType": "bool", - "name": "assertedTruthfully", - "type": "bool" - } - ], - "name": "assertionResolvedCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bondAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "collateral", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_proposalHash", - "type": "bytes32" - } - ], - "name": "deleteProposalOnUpgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "escalationManager", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct OptimisticGovernor.Transaction[]", - "name": "_transactions", - "type": "tuple[]" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "finder", - "outputs": [ - { - "internalType": "contract FinderInterface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getProposalBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "identifier", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "liveness", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "optimisticOracleV3", - "outputs": [ - { - "internalType": "contract OptimisticOracleV3Interface", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "proposalHashes", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct OptimisticGovernor.Transaction[]", - "name": "_transactions", - "type": "tuple[]" - }, - { - "internalType": "bytes", - "name": "_explanation", - "type": "bytes" - } - ], - "name": "proposeTransactions", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rules", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "_collateral", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bondAmount", - "type": "uint256" - } - ], - "name": "setCollateralAndBond", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_escalationManager", - "type": "address" - } - ], - "name": "setEscalationManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_identifier", - "type": "bytes32" - } - ], - "name": "setIdentifier", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "_liveness", - "type": "uint64" - } - ], - "name": "setLiveness", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_rules", - "type": "string" - } - ], - "name": "setRules", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initializeParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "sync", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60a06040523480156200001157600080fd5b506040516200565938038062005659833981016040819052620000349162000d92565b6067805460ff60a01b1916600160a01b179055604051600090620000679088908890889088908890889060200162000e67565b60408051601f1981840301815291905290506001600160a01b038816620000d55760405162461bcd60e51b815260206004820152601f60248201527f46696e64657220616464726573732063616e206e6f7420626520656d7074790060448201526064015b60405180910390fd5b6001600160a01b038816608052620000ed81620000fb565b50505050505050506200110a565b600054610100900460ff16620001185760005460ff161562000122565b62000122620002be565b620001875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000cc565b600054610100900460ff16158015620001aa576000805461ffff19166101011790555b620001c36067805460ff60a01b1916600160a01b179055565b620001cd620002dc565b60008060008060008087806020019051810190620001ec919062000ebf565b9550955095509550955095506200020a85856200034460201b60201c565b6200021583620004a9565b620002208262000592565b6200022b81620006da565b620002368662000842565b6200024186620008df565b6200024c866200097c565b6200025662000a3c565b6066546067546040516001600160a01b03918216815291811691908816907f268908d64ce6f0c721a4acf6ea8202edcdd077d5fee9976a9ce604f5bf30098f9060200160405180910390a35050505050508015620002ba576000805461ff00191690555b5050565b6000620002d63062000ae260201b620024f01760201c565b15905090565b600054610100900460ff16620003385760405162461bcd60e51b815260206004820152602b60248201526000805160206200561983398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000cc565b6200034262000af1565b565b6033546001600160a01b031633146200038f5760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b6200039962000b58565b604051631d1d5b3960e11b81526001600160a01b0384811660048301529190911690633a3ab67290602401602060405180830381865afa158015620003e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000408919062000f4f565b620004565760405162461bcd60e51b815260206004820152601860248201527f426f6e6420746f6b656e206e6f7420737570706f7274656400000000000000006044820152606401620000cc565b606880546001600160a01b0319166001600160a01b03841690811790915560698290556040518291907f6d99292521faedf161a1edd828ddef955afcb227fa80a42c65e5ac25dba40c0990600090a35050565b6033546001600160a01b03163314620004f45760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b6000815111620005475760405162461bcd60e51b815260206004820152601660248201527f52756c65732063616e206e6f7420626520656d707479000000000000000000006044820152606401620000cc565b606a62000555828262001009565b507fd126aed3fefb9793c6164dec52a0cd8fed9bd9a8867f4d7b41dbd6c7134ebf3081604051620005879190620010d5565b60405180910390a150565b6033546001600160a01b03163314620005dd5760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b620005e762000bee565b6001600160a01b03166390978d1b826040518263ffffffff1660e01b81526004016200061591815260200190565b602060405180830381865afa15801562000633573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000659919062000f4f565b620006a75760405162461bcd60e51b815260206004820152601860248201527f4964656e746966696572206e6f7420737570706f7274656400000000000000006044820152606401620000cc565b606b81905560405181907ff35b61cf27d8ae21648935573dbd9eefad145ebc7dfe806273e3f93d9896ab9c90600090a250565b6033546001600160a01b03163314620007255760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b6000816001600160401b031611620007805760405162461bcd60e51b815260206004820152601360248201527f4c6976656e6573732063616e27742062652030000000000000000000000000006044820152606401620000cc565b63bb744800816001600160401b031610620007ec5760405162461bcd60e51b815260206004820152602560248201527f4c6976656e657373206d757374206265206c657373207468616e2035323030206044820152647765656b7360d81b6064820152608401620000cc565b60688054600160a01b600160e01b031916600160a01b6001600160401b038416908102919091179091556040517f0ccc3b904401a4ffd81153f4acf19daaa09629a146f2642dc4785ff2d243d3aa90600090a250565b6033546001600160a01b031633146200088d5760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34290600090a35050565b6033546001600160a01b031633146200092a5760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b606780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b6033546001600160a01b03163314620009c75760405162461bcd60e51b81526020600482018190526024820152600080516020620056398339815191526044820152606401620000cc565b6001600160a01b03811662000a2e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000cc565b62000a398162000c40565b50565b6080516040516302abf57960e61b8152714f7074696d69737469634f7261636c65563360701b60048201526001600160a01b039091169063aafd5e4090602401602060405180830381865afa15801562000a9a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ac09190620010ea565b606c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b600054610100900460ff1662000b4d5760405162461bcd60e51b815260206004820152602b60248201526000805160206200561983398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000cc565b620003423362000c40565b6080516040516302abf57960e61b81527f436f6c6c61746572616c57686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e40906024015b602060405180830381865afa15801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be99190620010ea565b905090565b6080516040516302abf57960e61b81527f4964656e74696669657257686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e409060240162000ba5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038116811462000a3957600080fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000cdb57818101518382015260200162000cc1565b50506000910152565b600082601f83011262000cf657600080fd5b81516001600160401b038082111562000d135762000d1362000ca8565b604051601f8301601f19908116603f0116810190828211818310171562000d3e5762000d3e62000ca8565b8160405283815286602085880101111562000d5857600080fd5b62000d6b84602083016020890162000cbe565b9695505050505050565b80516001600160401b038116811462000d8d57600080fd5b919050565b600080600080600080600060e0888a03121562000dae57600080fd5b875162000dbb8162000c92565b602089015190975062000dce8162000c92565b604089015190965062000de18162000c92565b606089015160808a015191965094506001600160401b0381111562000e0557600080fd5b62000e138a828b0162000ce4565b93505060a0880151915062000e2b60c0890162000d75565b905092959891949750929550565b6000815180845262000e5381602086016020860162000cbe565b601f01601f19169290920160200192915050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009062000e9c9083018662000e39565b6080830194909452506001600160401b039190911660a090910152949350505050565b60008060008060008060c0878903121562000ed957600080fd5b865162000ee68162000c92565b602088015190965062000ef98162000c92565b6040880151606089015191965094506001600160401b0381111562000f1d57600080fd5b62000f2b89828a0162000ce4565b9350506080870151915062000f4360a0880162000d75565b90509295509295509295565b60006020828403121562000f6257600080fd5b8151801515811462000f7357600080fd5b9392505050565b600181811c9082168062000f8f57607f821691505b60208210810362000fb057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200100457600081815260208120601f850160051c8101602086101562000fdf5750805b601f850160051c820191505b81811015620010005782815560010162000feb565b5050505b505050565b81516001600160401b0381111562001025576200102562000ca8565b6200103d8162001036845462000f7a565b8462000fb6565b602080601f8311600181146200107557600084156200105c5750858301515b600019600386901b1c1916600185901b17855562001000565b600085815260208120601f198616915b82811015620010a65788860151825594840194600190910190840162001085565b5085821015620010c55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600062000f73602083018462000e39565b600060208284031215620010fd57600080fd5b815162000f738162000c92565b6080516144de6200113b600039600081816106280152818161255d015281816129930152612ac401526144de6000f3fe6080604052600436106102695760003560e01c806380f323a711610153578063ce0d8d20116100cb578063e20dac001161007f578063f2fde38b11610064578063f2fde38b146107bb578063f913f33a146107db578063fff6cae91461082457600080fd5b8063e20dac001461077c578063f1b156b21461079c57600080fd5b8063d4b83992116100b0578063d4b8399214610702578063d8dfeb451461072f578063e19a9dd91461075c57600080fd5b8063ce0d8d20146106c2578063d448a4ec146106e257600080fd5b8063ae054fdc11610122578063c5b0298911610107578063c5b029891461064a578063c910638914610677578063ca22b65a146106a257600080fd5b8063ae054fdc146105f6578063b9a3c84c1461061657600080fd5b806380f323a71461054c5780638da5cb5b146105625780639cd5b1151461058d578063a4f9edbf146105d657600080fd5b80635ad02cab116101e6578063715018a6116101b5578063776d1a011161019a578063776d1a01146104e95780637998a1c4146105095780637ceab3b11461051f57600080fd5b8063715018a6146104b457806375e0fc39146104c957600080fd5b80635ad02cab146103bf5780635aef7de6146104085780635da08758146104355780636ad0690a1461046257600080fd5b8063226beb191161023d5780633c4432f1116102225780633c4432f11461035057806350564e191461037057806352f6747a1461039d57600080fd5b8063226beb19146102eb57806329cb924d1461033d57600080fd5b8062c992061461026e578063086cfca8146102905780631b61cd22146102b0578063210f68ae146102d8575b600080fd5b34801561027a57600080fd5b5061028e610289366004613455565b610839565b005b34801561029c57600080fd5b5061028e6102ab366004613490565b6109db565b3480156102bc57600080fd5b506102c5610ad3565b6040519081526020015b60405180910390f35b61028e6102e6366004613745565b610b88565b3480156102f757600080fd5b50606c546103189073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cf565b34801561034957600080fd5b50426102c5565b34801561035c57600080fd5b5061028e61036b366004613790565b610e9c565b34801561037c57600080fd5b506102c561038b366004613455565b606e6020526000908152604090205481565b3480156103a957600080fd5b506103b26110ab565b6040516102cf919061381b565b3480156103cb57600080fd5b506103b26040518060400160405280600581526020017f72756c657300000000000000000000000000000000000000000000000000000081525081565b34801561041457600080fd5b506066546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044157600080fd5b506102c5610450366004613455565b606f6020526000908152604090205481565b34801561046e57600080fd5b5060685461049b9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102cf565b3480156104c057600080fd5b5061028e611139565b3480156104d557600080fd5b5061028e6104e436600461382e565b6111c6565b3480156104f557600080fd5b5061028e610504366004613490565b6113bf565b34801561051557600080fd5b506102c5606b5481565b34801561052b57600080fd5b506065546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561055857600080fd5b506102c560695481565b34801561056e57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610318565b34801561059957600080fd5b506103b26040518060400160405280600b81526020017f6578706c616e6174696f6e00000000000000000000000000000000000000000081525081565b3480156105e257600080fd5b5061028e6105f136600461385a565b6114b7565b34801561060257600080fd5b5061028e610611366004613455565b6116ee565b34801561062257600080fd5b506103187f000000000000000000000000000000000000000000000000000000000000000081565b34801561065657600080fd5b50606d546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561068357600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff16610318565b3480156106ae57600080fd5b5061028e6106bd366004613490565b6119a6565b3480156106ce57600080fd5b5061028e6106dd36600461388f565b611a96565b3480156106ee57600080fd5b5061028e6106fd366004613455565b611bc9565b34801561070e57600080fd5b506067546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561073b57600080fd5b506068546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561076857600080fd5b5061028e610777366004613490565b611c4f565b34801561078857600080fd5b5061028e6107973660046138d8565b611e73565b3480156107a857600080fd5b5061028e6107b736600461394a565b5050565b3480156107c757600080fd5b5061028e6107d6366004613490565b612342565b3480156107e757600080fd5b506103b26040518060400160405280600c81526020017f70726f706f73616c48617368000000000000000000000000000000000000000081525081565b34801561083057600080fd5b5061028e61246f565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6108c761250c565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b815260040161090191815260200190565b602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610942919061398a565b6109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4964656e746966696572206e6f7420737570706f72746564000000000000000060448201526064016108b6565b606b81905560405181907ff35b61cf27d8ae21648935573dbd9eefad145ebc7dfe806273e3f93d9896ab9c90600090a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6066805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34290600090a35050565b606c546068546040517f4360af3d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009283921690634360af3d90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906139a7565b90506069548111610b8057606954610b82565b805b91505090565b610b906125e3565b610bbd606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600081604051602001610bd09190613a98565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152606e909352912054909150610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50726f706f73616c206861736820646f6573206e6f742065786973740000000060448201526064016108b6565b6000818152606e60209081526040808320805490849055808452606f90925280832092909255606c5491517f8ea2f2ab00000000000000000000000000000000000000000000000000000000815260048101829052909173ffffffffffffffffffffffffffffffffffffffff1690638ea2f2ab906024016020604051808303816000875af1158015610d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d36919061398a565b5060005b8351811015610e25576000848281518110610d5757610d57613aab565b60200260200101519050610d7d8160000151826040015183606001518460200151612667565b610de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4661696c656420746f2065786563757465207472616e73616374696f6e00000060448201526064016108b6565b8183857f67f39f68c4fc5b0946e6512365dcb417c73df77a42aa2a37a4e464b07184f7a160405160405180910390a45080610e1d81613b09565b915050610d3a565b50604051819083907f921387264e63e358003f4757db4b456f399ba4ffbaa053ffab8439d6a32ef59c90600090a35050610e99606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b60008167ffffffffffffffff1611610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c6976656e6573732063616e277420626520300000000000000000000000000060448201526064016108b6565b63bb7448008167ffffffffffffffff161061102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c6976656e657373206d757374206265206c657373207468616e20353230302060448201527f7765656b7300000000000000000000000000000000000000000000000000000060648201526084016108b6565b606880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040517f0ccc3b904401a4ffd81153f4acf19daaa09629a146f2642dc4785ff2d243d3aa90600090a250565b606a80546110b890613b41565b80601f01602080910402602001604051908101604052809291908181526020018280546110e490613b41565b80156111315780601f1061110657610100808354040283529160200191611131565b820191906000526020600020905b81548152906001019060200180831161111457829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6111c460006128cb565b565b60335473ffffffffffffffffffffffffffffffffffffffff163314611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b61124f612942565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690633a3ab67290602401602060405180830381865afa1580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e1919061398a565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426f6e6420746f6b656e206e6f7420737570706f72746564000000000000000060448201526064016108b6565b606880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560698290556040518291907f6d99292521faedf161a1edd828ddef955afcb227fa80a42c65e5ac25dba40c0990600090a35050565b60335473ffffffffffffffffffffffffffffffffffffffff163314611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6067805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff166114d25760005460ff16156114d6565b303b155b611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b6565b600054610100900460ff161580156115a157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6115e5606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6115ed6129d7565b6000806000806000808780602001905181019061160a9190613b9f565b95509550955095509550955061162085856111c6565b61162983611a96565b61163282610839565b61163b81610e9c565b611644866109db565b61164d866113bf565b61165686612342565b61165e612a76565b60665460675460405173ffffffffffffffffffffffffffffffffffffffff918216815291811691908816907f268908d64ce6f0c721a4acf6ea8202edcdd077d5fee9976a9ce604f5bf30098f9060200160405180910390a350505050505080156107b757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6116f66125e3565b611723606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b8061178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642070726f706f73616c2068617368000000000000000000000060448201526064016108b6565b6000818152606e602052604090205480611800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50726f706f73616c206861736820646f6573206e6f742065786973740000000060448201526064016108b6565b606c546040517f883028840000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff169063883028849060240161020060405180830381865afa158015611871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118959190613d0b565b6020015173ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f4f76332075706772616465206e6f742064657465637465640000000000000060448201526064016108b6565b6000828152606e60209081526040808320839055838352606f90915280822082905551829184917f5edbbf8fde9a20c0b179352d836e1b966c991ff50d04bb4c014ef9eaac3d75cd9190a350610e99606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60335473ffffffffffffffffffffffffffffffffffffffff163314611a27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b606d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe0bfd64da71d0b48c43fc899463d98150863aec223fad28e3584ab986d06f67090600090a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314611b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6000815111611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f52756c65732063616e206e6f7420626520656d7074790000000000000000000060448201526064016108b6565b606a611b8e8282613e39565b507fd126aed3fefb9793c6164dec52a0cd8fed9bd9a8867f4d7b41dbd6c7134ebf3081604051611bbe919061381b565b60405180910390a150565b6000818152606f6020526040902054606c5473ffffffffffffffffffffffffffffffffffffffff163303611c46576000818152606e60209081526040808320839055848352606f90915280822082905551839183917f5edbbf8fde9a20c0b179352d836e1b966c991ff50d04bb4c014ef9eaac3d75cd9190a35050565b6107b7816116ee565b60335473ffffffffffffffffffffffffffffffffffffffff163314611cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b73ffffffffffffffffffffffffffffffffffffffff811615611e00576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9a919061398a565b611e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f477561726420646f6573206e6f7420696d706c656d656e74204945524331363560448201526064016108b6565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290602001611bbe565b611e7b6125e3565b611ea8606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040805180820190915260608152426020820181905290339060005b855181101561205c57600073ffffffffffffffffffffffffffffffffffffffff16868281518110611ef757611ef7613aab565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603611f80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5468652060746f6020616464726573732063616e6e6f7420626520307830000060448201526064016108b6565b6000868281518110611f9457611f94613aab565b60200260200101516060015151111561204a57611fe4868281518110611fbc57611fbc613aab565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff163b151590565b61204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f454f412063616e2774206163636570742074782077697468206461746100000060448201526064016108b6565b8061205481613b09565b915050611ec4565b50848152604051600090612074908790602001613a98565b60405160208183030381529060405280519060200120905060006120988287612b8b565b6000838152606e602052604090205490915015612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4475706c69636174652070726f706f73616c73206e6f7420616c6c6f7765640060448201526064016108b6565b600061211b610ad3565b6068549091506121439073ffffffffffffffffffffffffffffffffffffffff16333084612c77565b606c5460685461216d9173ffffffffffffffffffffffffffffffffffffffff918216911683612d59565b606c54606d54606854606b546040517f6457c97900000000000000000000000000000000000000000000000000000000815260009473ffffffffffffffffffffffffffffffffffffffff90811694636457c97994612201948a948e94309481169367ffffffffffffffff74010000000000000000000000000000000000000000820416939116918c91908c90600401613f53565b6020604051808303816000875af1158015612220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224491906139a7565b6000858152606e60209081526040808320849055838352606f90915290208590556068549091508190889073ffffffffffffffffffffffffffffffffffffffff8916907f3100c6fe4fcf9f84fa7552fac0148f6481fa5a5c79da76d0460fa5cd7852566d90899089908e90606a906122de9074010000000000000000000000000000000000000000900467ffffffffffffffff1688613fce565b6040516122ef959493929190613fe1565b60405180910390a4505050505050506107b7606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60335473ffffffffffffffffffffffffffffffffffffffff1633146123c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b73ffffffffffffffffffffffffffffffffffffffff8116612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108b6565b610e99816128cb565b6124776125e3565b6124a4606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6124ac612a76565b6111c4606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c6973740000000000000000000000000060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b602060405180830381865afa1580156125ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125de91906140d3565b905090565b60675474010000000000000000000000000000000000000000900460ff166111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b6565b60655460009073ffffffffffffffffffffffffffffffffffffffff161561275757606554604080518082018252600281527f3078000000000000000000000000000000000000000000000000000000000000602082015290517f75f0bb5200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916375f0bb529161272491899189918991899160009182918291829182919082906004016140f0565b600060405180830381600087803b15801561273e57600080fd5b505af1158015612752573d6000803e3d6000fd5b505050505b6067546040517f468721a700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063468721a7906127b3908890889088908890600401614189565b6020604051808303816000875af11580156127d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f6919061398a565b60655490915073ffffffffffffffffffffffffffffffffffffffff16156128c3576065546040517f932713680000000000000000000000000000000000000000000000000000000081527f30780000000000000000000000000000000000000000000000000000000000006004820152821515602482015273ffffffffffffffffffffffffffffffffffffffff90911690639327136890604401600060405180830381600087803b1580156128aa57600080fd5b505af11580156128be573d6000803e3d6000fd5b505050505b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c6973740000000000000000000000000060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e409060240161259d565b600054610100900460ff16612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b6565b6111c4612e57565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4f7074696d69737469634f7261636c655633000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e4090602401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4491906140d3565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060612bdc604051806020016040528060008152506040518060400160405280600c81526020017f70726f706f73616c48617368000000000000000000000000000000000000000081525085612ef7565b6040518060400160405280600b81526020017f6578706c616e6174696f6e000000000000000000000000000000000000000000815250836040518060400160405280600581526020017f72756c6573000000000000000000000000000000000000000000000000000000815250606a604051602001612c5f9594939291906141d6565b60405160208183030381529060405290505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612d539085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612f3e565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df491906139a7565b612dfe9190613fce565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150612d539085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612cd1565b600054610100900460ff16612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b6565b6111c4336128cb565b60606000612f05858561304f565b90508481612f1285613091565b604051602001612f249392919061436d565b6040516020818303038152906040529150505b9392505050565b6000612fa0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130d19092919063ffffffff16565b80519091501561304a5780806020019051810190612fbe919061398a565b61304a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108b6565b505050565b815160609015613080578160405160200161306a91906143b0565b6040516020818303038152906040529050612c71565b8160405160200161306a919061441c565b60606130a0608083901c6130e0565b6130a9836130e0565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b60606128c38484600085613282565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f080808080808080808080808080808080808080808080808080808080808080816816132045761320461445d565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b606082471015613314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108b6565b843b61337c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b6565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516133a5919061448c565b60006040518083038185875af1925050503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091506133f7828286613402565b979650505050505050565b60608315613411575081612f37565b8251156134215782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b6919061381b565b60006020828403121561346757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9957600080fd5b6000602082840312156134a257600080fd5b8135612f378161346e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156134ff576134ff6134ad565b60405290565b604051610180810167ffffffffffffffff811182821017156134ff576134ff6134ad565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613570576135706134ad565b604052919050565b600067ffffffffffffffff821115613592576135926134ad565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006135d16135cc84613578565b613529565b90508281528383830111156135e557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261360d57600080fd5b612f37838335602085016135be565b600082601f83011261362d57600080fd5b8135602067ffffffffffffffff8083111561364a5761364a6134ad565b8260051b613659838201613529565b938452858101830193838101908886111561367357600080fd5b84880192505b85831015613739578235848111156136915760008081fd5b88016080818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156136c75760008081fd5b6136cf6134dc565b878301356136dc8161346e565b8152604083810135600281106136f25760008081fd5b828a01526060848101358284015292840135928884111561371557600091508182fd5b6137238e8b868801016135fc565b9083015250845250509184019190840190613679565b98975050505050505050565b60006020828403121561375757600080fd5b813567ffffffffffffffff81111561376e57600080fd5b6128c38482850161361c565b67ffffffffffffffff81168114610e9957600080fd5b6000602082840312156137a257600080fd5b8135612f378161377a565b60005b838110156137c85781810151838201526020016137b0565b50506000910152565b600081518084526137e98160208601602086016137ad565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612f3760208301846137d1565b6000806040838503121561384157600080fd5b823561384c8161346e565b946020939093013593505050565b60006020828403121561386c57600080fd5b813567ffffffffffffffff81111561388357600080fd5b6128c3848285016135fc565b6000602082840312156138a157600080fd5b813567ffffffffffffffff8111156138b857600080fd5b8201601f810184136138c957600080fd5b6128c3848235602084016135be565b600080604083850312156138eb57600080fd5b823567ffffffffffffffff8082111561390357600080fd5b61390f8683870161361c565b9350602085013591508082111561392557600080fd5b50613932858286016135fc565b9150509250929050565b8015158114610e9957600080fd5b6000806040838503121561395d57600080fd5b82359150602083013561396f8161393c565b809150509250929050565b80516139858161393c565b919050565b60006020828403121561399c57600080fd5b8151612f378161393c565b6000602082840312156139b957600080fd5b5051919050565b600281106139f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600081518084526020808501808196508360051b8101915082860160005b85811015613a8b5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151613a54888801826139c0565b5060408281015190870152606091820151918601819052613a77818701836137d1565b9a87019a9550505090840190600101613a19565b5091979650505050505050565b602081526000612f3760208301846139fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b3a57613b3a613ada565b5060010190565b600181811c90821680613b5557607f821691505b602082108103613b8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516139858161377a565b60008060008060008060c08789031215613bb857600080fd5b8651613bc38161346e565b6020880151909650613bd48161346e565b60408801516060890151919650945067ffffffffffffffff811115613bf857600080fd5b8701601f81018913613c0957600080fd5b8051613c176135cc82613578565b8181528a6020838501011115613c2c57600080fd5b613c3d8260208301602086016137ad565b80955050505060808701519150613c5660a08801613b94565b90509295509295509295565b80516139858161346e565b600060a08284031215613c7f57600080fd5b60405160a0810181811067ffffffffffffffff82111715613ca257613ca26134ad565b80604052508091508251613cb58161393c565b81526020830151613cc58161393c565b60208201526040830151613cd88161393c565b60408201526060830151613ceb8161346e565b60608201526080830151613cfe8161346e565b6080919091015292915050565b60006102008284031215613d1e57600080fd5b613d26613505565b613d308484613c6d565b8152613d3e60a08401613c62565b6020820152613d4f60c08401613b94565b6040820152613d6060e0840161397a565b6060820152610100613d73818501613c62565b6080830152610120613d86818601613b94565b60a0840152610140613d9981870161397a565b60c08501526101608087015160e0860152610180870151848601526101a087015183860152613dcb6101c08801613c62565b82860152613ddc6101e08801613c62565b90850152509195945050505050565b601f82111561304a57600081815260208120601f850160051c81016020861015613e125750805b601f850160051c820191505b81811015613e3157828155600101613e1e565b505050505050565b815167ffffffffffffffff811115613e5357613e536134ad565b613e6781613e618454613b41565b84613deb565b602080601f831160018114613eba5760008415613e845750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613e31565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613f0757888601518255948401946001909101908401613ee8565b5085821015613f4357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000610120808352613f678184018d6137d1565b73ffffffffffffffffffffffffffffffffffffffff9b8c166020850152998b1660408401525050958816606087015267ffffffffffffffff9490941660808601529190951660a084015260c083019490945260e08201939093526101000191909152919050565b80820180821115612c7157612c71613ada565b60a0815260008651604060a0840152613ffd60e08401826139fb565b905060208089015160c08501528781850152838203604085015261402182886137d1565b915083820360608501526000865461403881613b41565b80855260018281168015614053576001811461408b576140b9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416868801528583151560051b88010194506140b9565b8a6000528560002060005b848110156140b1578154898201890152908301908701614096565b880187019550505b505050508093505050508260808301529695505050505050565b6000602082840312156140e557600080fd5b8151612f378161346e565b600061016073ffffffffffffffffffffffffffffffffffffffff808f1684528d60208501528160408501526141278285018e6137d1565b9150614136606085018d6139c0565b8a60808501528960a08501528860c085015280881660e085015280871661010085015283820361012085015261416c82876137d1565b925080851661014085015250509c9b505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526080604082015260006141be60808301856137d1565b90506141cd60608301846139c0565b95945050505050565b6000865160206141e98285838c016137ad565b81840191507f2c0000000000000000000000000000000000000000000000000000000000000082526001885161422481838601858d016137ad565b8084019350507f3a22000000000000000000000000000000000000000000000000000000000000808285015288516142628160038701868d016137ad565b7f222c00000000000000000000000000000000000000000000000000000000000060039590910194850152875161429f8160058701868c016137ad565b600594019384015285546007906000906142b881613b41565b81851680156142ce576001811461430557614335565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316858901528482151583028901019350614335565b8a6000528660002060005b8381101561432b5781548a8201880152908701908801614310565b5050848289010193505b50507f22000000000000000000000000000000000000000000000000000000000000008252506001019b9a5050505050505050505050565b6000845161437f8184602089016137ad565b8451908301906143938183602089016137ad565b84519101906143a68183602088016137ad565b0195945050505050565b7f2c000000000000000000000000000000000000000000000000000000000000008152600082516143e88160018501602087016137ad565b7f3a000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161442e8184602087016137ad565b7f3a00000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000825161449e8184602087016137ad565b919091019291505056fea264697066735822122059cd61e501bb0a313c4581280c5be7c92cd7e49764508932b90badd81b95a19464736f6c63430008100033496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420694f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", - "deployedBytecode": "0x6080604052600436106102695760003560e01c806380f323a711610153578063ce0d8d20116100cb578063e20dac001161007f578063f2fde38b11610064578063f2fde38b146107bb578063f913f33a146107db578063fff6cae91461082457600080fd5b8063e20dac001461077c578063f1b156b21461079c57600080fd5b8063d4b83992116100b0578063d4b8399214610702578063d8dfeb451461072f578063e19a9dd91461075c57600080fd5b8063ce0d8d20146106c2578063d448a4ec146106e257600080fd5b8063ae054fdc11610122578063c5b0298911610107578063c5b029891461064a578063c910638914610677578063ca22b65a146106a257600080fd5b8063ae054fdc146105f6578063b9a3c84c1461061657600080fd5b806380f323a71461054c5780638da5cb5b146105625780639cd5b1151461058d578063a4f9edbf146105d657600080fd5b80635ad02cab116101e6578063715018a6116101b5578063776d1a011161019a578063776d1a01146104e95780637998a1c4146105095780637ceab3b11461051f57600080fd5b8063715018a6146104b457806375e0fc39146104c957600080fd5b80635ad02cab146103bf5780635aef7de6146104085780635da08758146104355780636ad0690a1461046257600080fd5b8063226beb191161023d5780633c4432f1116102225780633c4432f11461035057806350564e191461037057806352f6747a1461039d57600080fd5b8063226beb19146102eb57806329cb924d1461033d57600080fd5b8062c992061461026e578063086cfca8146102905780631b61cd22146102b0578063210f68ae146102d8575b600080fd5b34801561027a57600080fd5b5061028e610289366004613455565b610839565b005b34801561029c57600080fd5b5061028e6102ab366004613490565b6109db565b3480156102bc57600080fd5b506102c5610ad3565b6040519081526020015b60405180910390f35b61028e6102e6366004613745565b610b88565b3480156102f757600080fd5b50606c546103189073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cf565b34801561034957600080fd5b50426102c5565b34801561035c57600080fd5b5061028e61036b366004613790565b610e9c565b34801561037c57600080fd5b506102c561038b366004613455565b606e6020526000908152604090205481565b3480156103a957600080fd5b506103b26110ab565b6040516102cf919061381b565b3480156103cb57600080fd5b506103b26040518060400160405280600581526020017f72756c657300000000000000000000000000000000000000000000000000000081525081565b34801561041457600080fd5b506066546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044157600080fd5b506102c5610450366004613455565b606f6020526000908152604090205481565b34801561046e57600080fd5b5060685461049b9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102cf565b3480156104c057600080fd5b5061028e611139565b3480156104d557600080fd5b5061028e6104e436600461382e565b6111c6565b3480156104f557600080fd5b5061028e610504366004613490565b6113bf565b34801561051557600080fd5b506102c5606b5481565b34801561052b57600080fd5b506065546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561055857600080fd5b506102c560695481565b34801561056e57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610318565b34801561059957600080fd5b506103b26040518060400160405280600b81526020017f6578706c616e6174696f6e00000000000000000000000000000000000000000081525081565b3480156105e257600080fd5b5061028e6105f136600461385a565b6114b7565b34801561060257600080fd5b5061028e610611366004613455565b6116ee565b34801561062257600080fd5b506103187f000000000000000000000000000000000000000000000000000000000000000081565b34801561065657600080fd5b50606d546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561068357600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff16610318565b3480156106ae57600080fd5b5061028e6106bd366004613490565b6119a6565b3480156106ce57600080fd5b5061028e6106dd36600461388f565b611a96565b3480156106ee57600080fd5b5061028e6106fd366004613455565b611bc9565b34801561070e57600080fd5b506067546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561073b57600080fd5b506068546103189073ffffffffffffffffffffffffffffffffffffffff1681565b34801561076857600080fd5b5061028e610777366004613490565b611c4f565b34801561078857600080fd5b5061028e6107973660046138d8565b611e73565b3480156107a857600080fd5b5061028e6107b736600461394a565b5050565b3480156107c757600080fd5b5061028e6107d6366004613490565b612342565b3480156107e757600080fd5b506103b26040518060400160405280600c81526020017f70726f706f73616c48617368000000000000000000000000000000000000000081525081565b34801561083057600080fd5b5061028e61246f565b60335473ffffffffffffffffffffffffffffffffffffffff1633146108bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6108c761250c565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b815260040161090191815260200190565b602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610942919061398a565b6109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4964656e746966696572206e6f7420737570706f72746564000000000000000060448201526064016108b6565b606b81905560405181907ff35b61cf27d8ae21648935573dbd9eefad145ebc7dfe806273e3f93d9896ab9c90600090a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6066805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34290600090a35050565b606c546068546040517f4360af3d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009283921690634360af3d90602401602060405180830381865afa158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d91906139a7565b90506069548111610b8057606954610b82565b805b91505090565b610b906125e3565b610bbd606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600081604051602001610bd09190613a98565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152606e909352912054909150610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50726f706f73616c206861736820646f6573206e6f742065786973740000000060448201526064016108b6565b6000818152606e60209081526040808320805490849055808452606f90925280832092909255606c5491517f8ea2f2ab00000000000000000000000000000000000000000000000000000000815260048101829052909173ffffffffffffffffffffffffffffffffffffffff1690638ea2f2ab906024016020604051808303816000875af1158015610d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d36919061398a565b5060005b8351811015610e25576000848281518110610d5757610d57613aab565b60200260200101519050610d7d8160000151826040015183606001518460200151612667565b610de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4661696c656420746f2065786563757465207472616e73616374696f6e00000060448201526064016108b6565b8183857f67f39f68c4fc5b0946e6512365dcb417c73df77a42aa2a37a4e464b07184f7a160405160405180910390a45080610e1d81613b09565b915050610d3a565b50604051819083907f921387264e63e358003f4757db4b456f399ba4ffbaa053ffab8439d6a32ef59c90600090a35050610e99606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60335473ffffffffffffffffffffffffffffffffffffffff163314610f1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b60008167ffffffffffffffff1611610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4c6976656e6573732063616e277420626520300000000000000000000000000060448201526064016108b6565b63bb7448008167ffffffffffffffff161061102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4c6976656e657373206d757374206265206c657373207468616e20353230302060448201527f7765656b7300000000000000000000000000000000000000000000000000000060648201526084016108b6565b606880547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040517f0ccc3b904401a4ffd81153f4acf19daaa09629a146f2642dc4785ff2d243d3aa90600090a250565b606a80546110b890613b41565b80601f01602080910402602001604051908101604052809291908181526020018280546110e490613b41565b80156111315780601f1061110657610100808354040283529160200191611131565b820191906000526020600020905b81548152906001019060200180831161111457829003601f168201915b505050505081565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6111c460006128cb565b565b60335473ffffffffffffffffffffffffffffffffffffffff163314611247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b61124f612942565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529190911690633a3ab67290602401602060405180830381865afa1580156112bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e1919061398a565b611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f426f6e6420746f6b656e206e6f7420737570706f72746564000000000000000060448201526064016108b6565b606880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560698290556040518291907f6d99292521faedf161a1edd828ddef955afcb227fa80a42c65e5ac25dba40c0990600090a35050565b60335473ffffffffffffffffffffffffffffffffffffffff163314611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6067805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d690600090a35050565b600054610100900460ff166114d25760005460ff16156114d6565b303b155b611562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b6565b600054610100900460ff161580156115a157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6115e5606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b6115ed6129d7565b6000806000806000808780602001905181019061160a9190613b9f565b95509550955095509550955061162085856111c6565b61162983611a96565b61163282610839565b61163b81610e9c565b611644866109db565b61164d866113bf565b61165686612342565b61165e612a76565b60665460675460405173ffffffffffffffffffffffffffffffffffffffff918216815291811691908816907f268908d64ce6f0c721a4acf6ea8202edcdd077d5fee9976a9ce604f5bf30098f9060200160405180910390a350505050505080156107b757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6116f66125e3565b611723606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b8061178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69642070726f706f73616c2068617368000000000000000000000060448201526064016108b6565b6000818152606e602052604090205480611800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50726f706f73616c206861736820646f6573206e6f742065786973740000000060448201526064016108b6565b606c546040517f883028840000000000000000000000000000000000000000000000000000000081526004810183905260009173ffffffffffffffffffffffffffffffffffffffff169063883028849060240161020060405180830381865afa158015611871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118959190613d0b565b6020015173ffffffffffffffffffffffffffffffffffffffff1614611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f4f76332075706772616465206e6f742064657465637465640000000000000060448201526064016108b6565b6000828152606e60209081526040808320839055838352606f90915280822082905551829184917f5edbbf8fde9a20c0b179352d836e1b966c991ff50d04bb4c014ef9eaac3d75cd9190a350610e99606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60335473ffffffffffffffffffffffffffffffffffffffff163314611a27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b606d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe0bfd64da71d0b48c43fc899463d98150863aec223fad28e3584ab986d06f67090600090a250565b60335473ffffffffffffffffffffffffffffffffffffffff163314611b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b6000815111611b82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f52756c65732063616e206e6f7420626520656d7074790000000000000000000060448201526064016108b6565b606a611b8e8282613e39565b507fd126aed3fefb9793c6164dec52a0cd8fed9bd9a8867f4d7b41dbd6c7134ebf3081604051611bbe919061381b565b60405180910390a150565b6000818152606f6020526040902054606c5473ffffffffffffffffffffffffffffffffffffffff163303611c46576000818152606e60209081526040808320839055848352606f90915280822082905551839183917f5edbbf8fde9a20c0b179352d836e1b966c991ff50d04bb4c014ef9eaac3d75cd9190a35050565b6107b7816116ee565b60335473ffffffffffffffffffffffffffffffffffffffff163314611cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b73ffffffffffffffffffffffffffffffffffffffff811615611e00576040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fe6d7a83a00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa158015611d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9a919061398a565b611e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f477561726420646f6573206e6f7420696d706c656d656e74204945524331363560448201526064016108b6565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa290602001611bbe565b611e7b6125e3565b611ea8606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040805180820190915260608152426020820181905290339060005b855181101561205c57600073ffffffffffffffffffffffffffffffffffffffff16868281518110611ef757611ef7613aab565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603611f80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f5468652060746f6020616464726573732063616e6e6f7420626520307830000060448201526064016108b6565b6000868281518110611f9457611f94613aab565b60200260200101516060015151111561204a57611fe4868281518110611fbc57611fbc613aab565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff163b151590565b61204a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f454f412063616e2774206163636570742074782077697468206461746100000060448201526064016108b6565b8061205481613b09565b915050611ec4565b50848152604051600090612074908790602001613a98565b60405160208183030381529060405280519060200120905060006120988287612b8b565b6000838152606e602052604090205490915015612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4475706c69636174652070726f706f73616c73206e6f7420616c6c6f7765640060448201526064016108b6565b600061211b610ad3565b6068549091506121439073ffffffffffffffffffffffffffffffffffffffff16333084612c77565b606c5460685461216d9173ffffffffffffffffffffffffffffffffffffffff918216911683612d59565b606c54606d54606854606b546040517f6457c97900000000000000000000000000000000000000000000000000000000815260009473ffffffffffffffffffffffffffffffffffffffff90811694636457c97994612201948a948e94309481169367ffffffffffffffff74010000000000000000000000000000000000000000820416939116918c91908c90600401613f53565b6020604051808303816000875af1158015612220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224491906139a7565b6000858152606e60209081526040808320849055838352606f90915290208590556068549091508190889073ffffffffffffffffffffffffffffffffffffffff8916907f3100c6fe4fcf9f84fa7552fac0148f6481fa5a5c79da76d0460fa5cd7852566d90899089908e90606a906122de9074010000000000000000000000000000000000000000900467ffffffffffffffff1688613fce565b6040516122ef959493929190613fe1565b60405180910390a4505050505050506107b7606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60335473ffffffffffffffffffffffffffffffffffffffff1633146123c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b6565b73ffffffffffffffffffffffffffffffffffffffff8116612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108b6565b610e99816128cb565b6124776125e3565b6124a4606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6124ac612a76565b6111c4606780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c6973740000000000000000000000000060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b602060405180830381865afa1580156125ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125de91906140d3565b905090565b60675474010000000000000000000000000000000000000000900460ff166111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b6565b60655460009073ffffffffffffffffffffffffffffffffffffffff161561275757606554604080518082018252600281527f3078000000000000000000000000000000000000000000000000000000000000602082015290517f75f0bb5200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916375f0bb529161272491899189918991899160009182918291829182919082906004016140f0565b600060405180830381600087803b15801561273e57600080fd5b505af1158015612752573d6000803e3d6000fd5b505050505b6067546040517f468721a700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063468721a7906127b3908890889088908890600401614189565b6020604051808303816000875af11580156127d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f6919061398a565b60655490915073ffffffffffffffffffffffffffffffffffffffff16156128c3576065546040517f932713680000000000000000000000000000000000000000000000000000000081527f30780000000000000000000000000000000000000000000000000000000000006004820152821515602482015273ffffffffffffffffffffffffffffffffffffffff90911690639327136890604401600060405180830381600087803b1580156128aa57600080fd5b505af11580156128be573d6000803e3d6000fd5b505050505b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c6973740000000000000000000000000060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e409060240161259d565b600054610100900460ff16612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b6565b6111c4612e57565b6040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4f7074696d69737469634f7261636c655633000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063aafd5e4090602401602060405180830381865afa158015612b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4491906140d3565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060612bdc604051806020016040528060008152506040518060400160405280600c81526020017f70726f706f73616c48617368000000000000000000000000000000000000000081525085612ef7565b6040518060400160405280600b81526020017f6578706c616e6174696f6e000000000000000000000000000000000000000000815250836040518060400160405280600581526020017f72756c6573000000000000000000000000000000000000000000000000000000815250606a604051602001612c5f9594939291906141d6565b60405160208183030381529060405290505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612d539085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612f3e565b50505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df491906139a7565b612dfe9190613fce565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150612d539085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612cd1565b600054610100900460ff16612eee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b6565b6111c4336128cb565b60606000612f05858561304f565b90508481612f1285613091565b604051602001612f249392919061436d565b6040516020818303038152906040529150505b9392505050565b6000612fa0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130d19092919063ffffffff16565b80519091501561304a5780806020019051810190612fbe919061398a565b61304a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108b6565b505050565b815160609015613080578160405160200161306a91906143b0565b6040516020818303038152906040529050612c71565b8160405160200161306a919061441c565b60606130a0608083901c6130e0565b6130a9836130e0565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b60606128c38484600085613282565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f080808080808080808080808080808080808080808080808080808080808080816816132045761320461445d565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b606082471015613314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108b6565b843b61337c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b6565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516133a5919061448c565b60006040518083038185875af1925050503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091506133f7828286613402565b979650505050505050565b60608315613411575081612f37565b8251156134215782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b6919061381b565b60006020828403121561346757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e9957600080fd5b6000602082840312156134a257600080fd5b8135612f378161346e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156134ff576134ff6134ad565b60405290565b604051610180810167ffffffffffffffff811182821017156134ff576134ff6134ad565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613570576135706134ad565b604052919050565b600067ffffffffffffffff821115613592576135926134ad565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006135d16135cc84613578565b613529565b90508281528383830111156135e557600080fd5b828260208301376000602084830101529392505050565b600082601f83011261360d57600080fd5b612f37838335602085016135be565b600082601f83011261362d57600080fd5b8135602067ffffffffffffffff8083111561364a5761364a6134ad565b8260051b613659838201613529565b938452858101830193838101908886111561367357600080fd5b84880192505b85831015613739578235848111156136915760008081fd5b88016080818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156136c75760008081fd5b6136cf6134dc565b878301356136dc8161346e565b8152604083810135600281106136f25760008081fd5b828a01526060848101358284015292840135928884111561371557600091508182fd5b6137238e8b868801016135fc565b9083015250845250509184019190840190613679565b98975050505050505050565b60006020828403121561375757600080fd5b813567ffffffffffffffff81111561376e57600080fd5b6128c38482850161361c565b67ffffffffffffffff81168114610e9957600080fd5b6000602082840312156137a257600080fd5b8135612f378161377a565b60005b838110156137c85781810151838201526020016137b0565b50506000910152565b600081518084526137e98160208601602086016137ad565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612f3760208301846137d1565b6000806040838503121561384157600080fd5b823561384c8161346e565b946020939093013593505050565b60006020828403121561386c57600080fd5b813567ffffffffffffffff81111561388357600080fd5b6128c3848285016135fc565b6000602082840312156138a157600080fd5b813567ffffffffffffffff8111156138b857600080fd5b8201601f810184136138c957600080fd5b6128c3848235602084016135be565b600080604083850312156138eb57600080fd5b823567ffffffffffffffff8082111561390357600080fd5b61390f8683870161361c565b9350602085013591508082111561392557600080fd5b50613932858286016135fc565b9150509250929050565b8015158114610e9957600080fd5b6000806040838503121561395d57600080fd5b82359150602083013561396f8161393c565b809150509250929050565b80516139858161393c565b919050565b60006020828403121561399c57600080fd5b8151612f378161393c565b6000602082840312156139b957600080fd5b5051919050565b600281106139f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600081518084526020808501808196508360051b8101915082860160005b85811015613a8b5782840389528151608073ffffffffffffffffffffffffffffffffffffffff825116865286820151613a54888801826139c0565b5060408281015190870152606091820151918601819052613a77818701836137d1565b9a87019a9550505090840190600101613a19565b5091979650505050505050565b602081526000612f3760208301846139fb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b3a57613b3a613ada565b5060010190565b600181811c90821680613b5557607f821691505b602082108103613b8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516139858161377a565b60008060008060008060c08789031215613bb857600080fd5b8651613bc38161346e565b6020880151909650613bd48161346e565b60408801516060890151919650945067ffffffffffffffff811115613bf857600080fd5b8701601f81018913613c0957600080fd5b8051613c176135cc82613578565b8181528a6020838501011115613c2c57600080fd5b613c3d8260208301602086016137ad565b80955050505060808701519150613c5660a08801613b94565b90509295509295509295565b80516139858161346e565b600060a08284031215613c7f57600080fd5b60405160a0810181811067ffffffffffffffff82111715613ca257613ca26134ad565b80604052508091508251613cb58161393c565b81526020830151613cc58161393c565b60208201526040830151613cd88161393c565b60408201526060830151613ceb8161346e565b60608201526080830151613cfe8161346e565b6080919091015292915050565b60006102008284031215613d1e57600080fd5b613d26613505565b613d308484613c6d565b8152613d3e60a08401613c62565b6020820152613d4f60c08401613b94565b6040820152613d6060e0840161397a565b6060820152610100613d73818501613c62565b6080830152610120613d86818601613b94565b60a0840152610140613d9981870161397a565b60c08501526101608087015160e0860152610180870151848601526101a087015183860152613dcb6101c08801613c62565b82860152613ddc6101e08801613c62565b90850152509195945050505050565b601f82111561304a57600081815260208120601f850160051c81016020861015613e125750805b601f850160051c820191505b81811015613e3157828155600101613e1e565b505050505050565b815167ffffffffffffffff811115613e5357613e536134ad565b613e6781613e618454613b41565b84613deb565b602080601f831160018114613eba5760008415613e845750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613e31565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613f0757888601518255948401946001909101908401613ee8565b5085821015613f4357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000610120808352613f678184018d6137d1565b73ffffffffffffffffffffffffffffffffffffffff9b8c166020850152998b1660408401525050958816606087015267ffffffffffffffff9490941660808601529190951660a084015260c083019490945260e08201939093526101000191909152919050565b80820180821115612c7157612c71613ada565b60a0815260008651604060a0840152613ffd60e08401826139fb565b905060208089015160c08501528781850152838203604085015261402182886137d1565b915083820360608501526000865461403881613b41565b80855260018281168015614053576001811461408b576140b9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008416868801528583151560051b88010194506140b9565b8a6000528560002060005b848110156140b1578154898201890152908301908701614096565b880187019550505b505050508093505050508260808301529695505050505050565b6000602082840312156140e557600080fd5b8151612f378161346e565b600061016073ffffffffffffffffffffffffffffffffffffffff808f1684528d60208501528160408501526141278285018e6137d1565b9150614136606085018d6139c0565b8a60808501528960a08501528860c085015280881660e085015280871661010085015283820361012085015261416c82876137d1565b925080851661014085015250509c9b505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526080604082015260006141be60808301856137d1565b90506141cd60608301846139c0565b95945050505050565b6000865160206141e98285838c016137ad565b81840191507f2c0000000000000000000000000000000000000000000000000000000000000082526001885161422481838601858d016137ad565b8084019350507f3a22000000000000000000000000000000000000000000000000000000000000808285015288516142628160038701868d016137ad565b7f222c00000000000000000000000000000000000000000000000000000000000060039590910194850152875161429f8160058701868c016137ad565b600594019384015285546007906000906142b881613b41565b81851680156142ce576001811461430557614335565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316858901528482151583028901019350614335565b8a6000528660002060005b8381101561432b5781548a8201880152908701908801614310565b5050848289010193505b50507f22000000000000000000000000000000000000000000000000000000000000008252506001019b9a5050505050505050505050565b6000845161437f8184602089016137ad565b8451908301906143938183602089016137ad565b84519101906143a68183602088016137ad565b0195945050505050565b7f2c000000000000000000000000000000000000000000000000000000000000008152600082516143e88160018501602087016137ad565b7f3a000000000000000000000000000000000000000000000000000000000000006001939091019283015250600201919050565b6000825161442e8184602087016137ad565b7f3a00000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000825161449e8184602087016137ad565b919091019291505056fea264697066735822122059cd61e501bb0a313c4581280c5be7c92cd7e49764508932b90badd81b95a19464736f6c63430008100033", - "linkReferences": {}, - "deployedLinkReferences": {} -} \ No newline at end of file diff --git a/packages/app/src/contracts/RealityModuleERC20.json b/packages/app/src/contracts/RealityModuleERC20.json deleted file mode 100644 index 9354a665..00000000 --- a/packages/app/src/contracts/RealityModuleERC20.json +++ /dev/null @@ -1,880 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "RealityModuleERC20", - "sourceName": "contracts/RealityModuleERC20.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "contract RealitioV3", - "name": "_oracle", - "type": "address" - }, - { - "internalType": "uint32", - "name": "timeout", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "cooldown", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "expiration", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "bond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "templateId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "arbitrator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "questionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "string", - "name": "proposalId", - "type": "string" - } - ], - "name": "ProposalQuestionCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "RealityModuleSetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "INVALIDATED", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TRANSACTION_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "addProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "addProposalWithNonce", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "answerExpiration", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "buildQuestion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "txIndex", - "type": "uint256" - } - ], - "name": "executeProposalWithIndex", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "executedProposalTransactions", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "generateTransactionHashData", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "question", - "type": "string" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "getQuestionId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "markProposalAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "questionHash", - "type": "bytes32" - } - ], - "name": "markProposalAsInvalidByHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "questionHash", - "type": "bytes32" - } - ], - "name": "markProposalWithExpiredAnswerAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "oracle", - "outputs": [ - { - "internalType": "contract RealitioV3", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionArbitrator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionCooldown", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "questionIds", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionTimeout", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "expiration", - "type": "uint32" - } - ], - "name": "setAnswerExpiration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "arbitrator", - "type": "address" - } - ], - "name": "setArbitrator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "bond", - "type": "uint256" - } - ], - "name": "setMinimumBond", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "cooldown", - "type": "uint32" - } - ], - "name": "setQuestionCooldown", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "timeout", - "type": "uint32" - } - ], - "name": "setQuestionTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "templateId", - "type": "uint256" - } - ], - "name": "setTemplate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "template", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620066f5380380620066f5833981810160405281019062000037919062000b2f565b8989898989898989898960008a8a8a8a8a8a8a8a8a8a604051602001620000689a9998979695949392919062000ee6565b60405160208183030381529060405290506200008a81620000a560201b60201c565b5050505050505050505050505050505050505050506200121f565b6000806000806000806000806000808a806020019051810190620000ca919062000a3f565b9950995099509950995099509950995099509950620000ee620004e160201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141562000161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001589062001062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415620001d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001cb9062000fb8565b60405180910390fd5b60008663ffffffff161162000220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000217906200101e565b60405180910390fd5b60008463ffffffff1614806200024a5750603c858562000241919062001095565b63ffffffff1610155b6200028c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002839062000ffc565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550620004128a620005e060201b60201c565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620004cc919062000ec9565b60405180910390a45050505050505050505050565b600060019054906101000a900460ff168062000508575060008054906101000a900460ff16155b6200054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005419062000fda565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200059b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620005ab620006f660201b60201c565b620005bb620007d560201b60201c565b8015620005dd5760008060016101000a81548160ff0219169083151502179055505b50565b620005f0620008d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000616620008dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200066f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006669062001040565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620006e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d99062000f96565b60405180910390fd5b620006f3816200090660201b60201c565b50565b600060019054906101000a900460ff16806200071d575060008054906101000a900460ff16155b6200075f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007569062000fda565b60405180910390fd5b60008060019054906101000a900460ff161590508015620007b0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620007d25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620007fc575060008054906101000a900460ff16155b6200083e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008359062000fda565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200088f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620008af620008a3620008d460201b60201c565b6200090660201b60201c565b8015620008d15760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620009dd816200119d565b92915050565b600081519050620009f481620011b7565b92915050565b60008151905062000a0b81620011d1565b92915050565b60008151905062000a2281620011eb565b92915050565b60008151905062000a398162001205565b92915050565b6000806000806000806000806000806101408b8d03121562000a6057600080fd5b600062000a708d828e01620009e3565b9a5050602062000a838d828e01620009e3565b995050604062000a968d828e01620009e3565b985050606062000aa98d828e01620009fa565b975050608062000abc8d828e0162000a28565b96505060a062000acf8d828e0162000a28565b95505060c062000ae28d828e0162000a28565b94505060e062000af58d828e0162000a11565b93505061010062000b098d828e0162000a11565b92505061012062000b1d8d828e01620009e3565b9150509295989b9194979a5092959850565b6000806000806000806000806000806101408b8d03121562000b5057600080fd5b600062000b608d828e01620009cc565b9a5050602062000b738d828e01620009cc565b995050604062000b868d828e01620009cc565b985050606062000b998d828e01620009fa565b975050608062000bac8d828e0162000a28565b96505060a062000bbf8d828e0162000a28565b95505060c062000bd28d828e0162000a28565b94505060e062000be58d828e0162000a11565b93505061010062000bf98d828e0162000a11565b92505061012062000c0d8d828e01620009cc565b9150509295989b9194979a5092959850565b62000c2a81620010d0565b82525050565b62000c3b8162001146565b82525050565b600062000c5060268362001084565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000cb8601e8362001084565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000cfa602e8362001084565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000d6260448362001084565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600062000df0601b8362001084565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b600062000e3260208362001084565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000e74601e8362001084565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b62000eb2816200112c565b82525050565b62000ec38162001136565b82525050565b600060208201905062000ee0600083018462000c1f565b92915050565b60006101408201905062000efe600083018d62000c1f565b62000f0d602083018c62000c1f565b62000f1c604083018b62000c1f565b62000f2b606083018a62000c30565b62000f3a608083018962000eb8565b62000f4960a083018862000eb8565b62000f5860c083018762000eb8565b62000f6760e083018662000ea7565b62000f7761010083018562000ea7565b62000f8761012083018462000c1f565b9b9a5050505050505050505050565b6000602082019050818103600083015262000fb18162000c41565b9050919050565b6000602082019050818103600083015262000fd38162000ca9565b9050919050565b6000602082019050818103600083015262000ff58162000ceb565b9050919050565b60006020820190508181036000830152620010178162000d53565b9050919050565b60006020820190508181036000830152620010398162000de1565b9050919050565b600060208201905081810360008301526200105b8162000e23565b9050919050565b600060208201905081810360008301526200107d8162000e65565b9050919050565b600082825260208201905092915050565b6000620010a28262001136565b9150620010af8362001136565b925082821015620010c557620010c46200116e565b5b828203905092915050565b6000620010dd826200110c565b9050919050565b6000620010f1826200110c565b9050919050565b60006200110582620010d0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600062001153826200115a565b9050919050565b600062001167826200110c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620011a881620010d0565b8114620011b457600080fd5b50565b620011c281620010e4565b8114620011ce57600080fd5b50565b620011dc81620010f8565b8114620011e857600080fd5b50565b620011f6816200112c565b81146200120257600080fd5b50565b620012108162001136565b81146200121c57600080fd5b50565b6154c6806200122f6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c8063776d1a0111610146578063b5a73e75116100c3578063d4b8399211610087578063d4b839921461069a578063dc89a198146106b8578063e19a9dd9146106e8578063e319044b14610704578063f2fde38b14610720578063ff0394eb1461073c57610253565b8063b5a73e75146105f4578063c910638914610612578063cc3b43b114610630578063cd3ef95114610660578063d07acb5b1461067c57610253565b80638dcd26611161010a5780638dcd2661146105665780639a674ed114610582578063a4f9edbf1461059e578063aa7517e1146105ba578063b0eefabe146105d857610253565b8063776d1a01146104d25780637ceab3b1146104ee5780637dc0d1d01461050c57806388633b7b1461052a5780638da5cb5b1461054857610253565b806339eafa6f116101d45780635aef7de6116101985780635aef7de6146104545780635fc1188d146104725780636775ef691461048e5780636f2ddd93146104aa578063715018a6146104c857610253565b806339eafa6f1461038c5780633ea3c146146103bc578063425a2a3c146103d857806345c7980e146104085780634e1b83741461042457610253565b80631db61b541161021b5780631db61b54146102e857806321e314cb146103065780632351a877146103225780632b5000411461033e5780633408e4701461036e57610253565b8063086cfca8146102585780631138a87e1461027457806314604b8c1461029057806314f5a395146102ac5780631ba18b9b146102ca575b600080fd5b610272600480360381019061026d91906134e9565b61075a565b005b61028e60048036038101906102899190613997565b61089c565b005b6102aa60048036038101906102a591906138b1565b610b6d565b005b6102b4611235565b6040516102c19190614d54565b60405180910390f35b6102d261124b565b6040516102df9190614d54565b60405180910390f35b6102f0611261565b6040516102fd919061481e565b60405180910390f35b610320600480360381019061031b9190613abc565b611288565b005b61033c600480360381019061033791906137e0565b6113a6565b005b610358600480360381019061035391906135ed565b6113be565b604051610365919061481e565b60405180910390f35b6103766113df565b6040516103839190614cb4565b60405180910390f35b6103a660048036038101906103a19190613774565b6113ec565b6040516103b39190614952565b60405180910390f35b6103d660048036038101906103d191906136a5565b611454565b005b6103f260048036038101906103ed91906135ed565b61150e565b6040516103ff9190614915565b60405180910390f35b610422600480360381019061041d9190613774565b611609565b005b61043e600480360381019061043991906136f7565b611632565b60405161044b9190614803565b60405180910390f35b61045c611661565b60405161046991906146e3565b60405180910390f35b61048c60048036038101906104879190613a6a565b611687565b005b6104a860048036038101906104a39190613abc565b61170d565b005b6104b26117f6565b6040516104bf9190614cb4565b60405180910390f35b6104d06117fc565b005b6104ec60048036038101906104e791906134e9565b611884565b005b6104f66119c6565b60405161050391906146e3565b60405180910390f35b6105146119ec565b6040516105219190614937565b60405180910390f35b610532611a12565b60405161053f919061481e565b60405180910390f35b610550611a39565b60405161055d91906146e3565b60405180910390f35b610580600480360381019061057b9190613774565b611a63565b005b61059c60048036038101906105979190613abc565b611a73565b005b6105b860048036038101906105b39190613733565b611b8b565b005b6105c2611fa4565b6040516105cf9190614cb4565b60405180910390f35b6105f260048036038101906105ed91906134e9565b611faa565b005b6105fc61206a565b60405161060991906146e3565b60405180910390f35b61061a612090565b60405161062791906146e3565b60405180910390f35b61064a60048036038101906106459190613a16565b6120ba565b604051610657919061481e565b60405180910390f35b61067a60048036038101906106759190613a6a565b612181565b005b610684612207565b6040516106919190614d54565b60405180910390f35b6106a261221d565b6040516106af91906146e3565b60405180910390f35b6106d260048036038101906106cd91906136a5565b612243565b6040516106df919061481e565b60405180910390f35b61070260048036038101906106fd91906134e9565b61225b565b005b61071e600480360381019061071991906136a5565b612491565b005b61073a600480360381019061073591906134e9565b6127ee565b005b6107446128e6565b604051610751919061481e565b60405180910390f35b61076261290d565b73ffffffffffffffffffffffffffffffffffffffff16610780611a39565b73ffffffffffffffffffffffffffffffffffffffff16146107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90614b34565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006108a884846113ec565b90506000818051906020012090506000831115610a52576000606c60008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490614b54565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b81526004016109bc919061481e565b60206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906136ce565b14610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390614b14565b60405180910390fd5b50610aab565b6000801b606c60008381526020019081526020016000205414610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190614a14565b60405180910390fd5b5b6000610ab783856120ba565b905080606c6000848152602001908152602001600020819055506000610add8486612915565b9050808214610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614a34565b60405180910390fd5b86604051610b2f919061465e565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050565b6000610b7988886113ec565b8051906020012090506000606c60008381526020019081526020016000205490506000801b811415610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790614c14565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90614c34565b60405180910390fd5b6000610c5588888888886113be565b905080898581518110610c91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614c94565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610d39919061481e565b60206040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8991906136ce565b14610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090614c54565b60405180910390fd5b6000606b5490506000811480610e895750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610e35919061481e565b60206040518083038186803b158015610e4d57600080fd5b505afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190613a93565b8111155b610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906149b4565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610f25919061481e565b60206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190613ae5565b905042606a60049054906101000a900463ffffffff1663ffffffff168263ffffffff16610fa29190614ea2565b10610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990614bd4565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806110255750428163ffffffff168363ffffffff166110229190614ea2565b10155b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90614a54565b60405180910390fd5b60008714806110ed5750606d600087815260200190815260200160002060008d60018a6110919190614fba565b815181106110c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b61112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390614974565b60405180910390fd5b606d6000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614bb4565b60405180910390fd5b6001606d6000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e78b8b8b8b612a14565b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614c74565b60405180910390fd5b50505050505050505050505050565b606a60049054906101000a900463ffffffff1681565b606a60009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b61129061290d565b73ffffffffffffffffffffffffffffffffffffffff166112ae611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614b34565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806113425750603c82826113399190614fee565b63ffffffff1610155b611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614ab4565b60405180910390fd5b81606a60046101000a81548163ffffffff021916908363ffffffff1602179055505050565b6113b68686868686866000610b6d565b505050505050565b60006113cd868686868661150e565b80519060200120905095945050505050565b6000804690508091505090565b6060600061141f836040516020016114049190614578565b60405160208183030381529060405280519060200120612d09565b90508362e2909f60e81b8260405160200161143c93929190614675565b60405160208183030381529060405291505092915050565b61145c61290d565b73ffffffffffffffffffffffffffffffffffffffff1661147a611a39565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790614b34565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6060600061151a6113df565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611556939291906148c3565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016115b596959493929190614839565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016115ec949392919061458f565b604051602081830303815290604052935050505095945050505050565b600061161583836113ec565b905060008180519060200120905061162c81611454565b50505050565b606d6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61168f61290d565b73ffffffffffffffffffffffffffffffffffffffff166116ad611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614b34565b60405180910390fd5b8060698190555050565b61171561290d565b73ffffffffffffffffffffffffffffffffffffffff16611733611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090614b34565b60405180910390fd5b60008163ffffffff16116117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614ad4565b60405180910390fd5b80606a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60695481565b61180461290d565b73ffffffffffffffffffffffffffffffffffffffff16611822611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614b34565b60405180910390fd5b6118826000612eee565b565b61188c61290d565b73ffffffffffffffffffffffffffffffffffffffff166118aa611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614b34565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a6f8282600061089c565b5050565b611a7b61290d565b73ffffffffffffffffffffffffffffffffffffffff16611a99611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614b34565b60405180910390fd5b60008163ffffffff161480611b285750603c606a60049054906101000a900463ffffffff1682611b1f9190614fee565b63ffffffff1610155b611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614ab4565b60405180910390fd5b80606a60086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000806000806000806000806000808a806020019051810190611bae9190613512565b9950995099509950995099509950995099509950611bca612fb4565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614b74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614a74565b60405180910390fd5b60008663ffffffff1611611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614ad4565b60405180910390fd5b60008463ffffffff161480611d1a5750603c8585611d119190614fee565b63ffffffff1610155b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614ab4565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550611ed78a6127ee565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f8f91906146e3565b60405180910390a45050505050505050505050565b606b5481565b611fb261290d565b73ffffffffffffffffffffffffffffffffffffffff16611fd0611a39565b73ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614b34565b60405180910390fd5b80606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806069546000856040516020016120d5939291906146aa565b60405160208183030381529060405280519060200120905080606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16606b54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308860405160200161216297969594939291906145dd565b6040516020818303038152906040528051906020012091505092915050565b61218961290d565b73ffffffffffffffffffffffffffffffffffffffff166121a7611a39565b73ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614b34565b60405180910390fd5b80606b8190555050565b606a60089054906101000a900463ffffffff1681565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606c6020528060005260406000206000915090505481565b61226361290d565b73ffffffffffffffffffffffffffffffffffffffff16612281611a39565b73ffffffffffffffffffffffffffffffffffffffff16146122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce90614b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123f4578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161236491906148fa565b60206040518083038186803b15801561237c57600080fd5b505afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b4919061367c565b6123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614b94565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161248691906146e3565b60405180910390a150565b6000606a60089054906101000a900463ffffffff16905060008163ffffffff16116124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e890614af4565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906149d4565b60405180910390fd5b6000801b8114156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614c14565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401612615919061481e565b60206040518083038186803b15801561262d57600080fd5b505afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906136ce565b146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614bf4565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401612702919061481e565b60206040518083038186803b15801561271a57600080fd5b505afa15801561272e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127529190613ae5565b9050428363ffffffff168263ffffffff1661276d9190614ea2565b106127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a4906149f4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008681526020019081526020016000208190555050505050565b6127f661290d565b73ffffffffffffffffffffffffffffffffffffffff16612814611a39565b73ffffffffffffffffffffffffffffffffffffffff161461286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190614b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d190614994565b60405180910390fd5b6128e381612eee565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352debac360695485606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16600088606b5460006040518963ffffffff1660e01b81526004016129ba989796959493929190614ccf565b602060405180830381600087803b1580156129d457600080fd5b505af11580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c91906136ce565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4657606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b139b9a9998979695949392919061474a565b600060405180830381600087803b158015612b2d57600080fd5b505af1158015612b41573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612ba794939291906146fe565b602060405180830381600087803b158015612bc157600080fd5b505af1158015612bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf9919061367c565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d0157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612cce92919061489a565b600060405180830381600087803b158015612ce857600080fd5b505af1158015612cfc573d6000803e3d6000fd5b505050505b949350505050565b60606000604067ffffffffffffffff811115612d4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612d805781602001600182028036833780820191505090505b50905060005b6020811015612ee4576000600882612d9e9190614f60565b85901b60f81c90506000601082612db59190614f2f565b90506000601083612dc691906152b3565b9050612dd18261309d565b85856002612ddf9190614f60565b81518110612e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612e4e8161309d565b856001866002612e5e9190614f60565b612e689190614ea2565b81518110612e9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080612edc9061520c565b915050612d86565b5080915050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612fda575060008054906101000a900460ff16155b613019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301090614a94565b60405180910390fd5b60008060019054906101000a900460ff161590508015613069576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6130716130da565b6130796131b3565b801561309a5760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156130c2576030826130b89190614ef8565b60f81b90506130d5565b6057826130cf9190614ef8565b60f81b90505b919050565b600060019054906101000a900460ff1680613100575060008054906101000a900460ff16155b61313f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313690614a94565b60405180910390fd5b60008060019054906101000a900460ff16159050801561318f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156131b05760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806131d9575060008054906101000a900460ff16155b613218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320f90614a94565b60405180910390fd5b60008060019054906101000a900460ff161590508015613268576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61327861327361290d565b612eee565b80156132995760008060016101000a81548160ff0219169083151502179055505b50565b60006132af6132aa84614da0565b614d6f565b905080838252602082019050828560208602820111156132ce57600080fd5b60005b858110156132fe57816132e488826133ed565b8452602084019350602083019250506001810190506132d1565b5050509392505050565b600061331b61331684614dcc565b614d6f565b90508281526020810184848401111561333357600080fd5b61333e8482856151ca565b509392505050565b600061335961335484614dfc565b614d6f565b90508281526020810184848401111561337157600080fd5b61337c8482856151ca565b509392505050565b600081359050613393816153df565b92915050565b6000815190506133a8816153f6565b92915050565b600082601f8301126133bf57600080fd5b81356133cf84826020860161329c565b91505092915050565b6000815190506133e78161540d565b92915050565b6000813590506133fc81615424565b92915050565b60008151905061341181615424565b92915050565b600082601f83011261342857600080fd5b8135613438848260208601613308565b91505092915050565b6000815190506134508161543b565b92915050565b60008135905061346581615452565b92915050565b600082601f83011261347c57600080fd5b813561348c848260208601613346565b91505092915050565b6000813590506134a481615462565b92915050565b6000815190506134b981615462565b92915050565b6000813590506134ce81615479565b92915050565b6000815190506134e381615479565b92915050565b6000602082840312156134fb57600080fd5b600061350984828501613384565b91505092915050565b6000806000806000806000806000806101408b8d03121561353257600080fd5b60006135408d828e01613399565b9a505060206135518d828e01613399565b99505060406135628d828e01613399565b98505060606135738d828e01613441565b97505060806135848d828e016134d4565b96505060a06135958d828e016134d4565b95505060c06135a68d828e016134d4565b94505060e06135b78d828e016134aa565b9350506101006135c98d828e016134aa565b9250506101206135db8d828e01613399565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561360557600080fd5b600061361388828901613384565b955050602061362488828901613495565b945050604086013567ffffffffffffffff81111561364157600080fd5b61364d88828901613417565b935050606061365e88828901613456565b925050608061366f88828901613495565b9150509295509295909350565b60006020828403121561368e57600080fd5b600061369c848285016133d8565b91505092915050565b6000602082840312156136b757600080fd5b60006136c5848285016133ed565b91505092915050565b6000602082840312156136e057600080fd5b60006136ee84828501613402565b91505092915050565b6000806040838503121561370a57600080fd5b6000613718858286016133ed565b9250506020613729858286016133ed565b9150509250929050565b60006020828403121561374557600080fd5b600082013567ffffffffffffffff81111561375f57600080fd5b61376b84828501613417565b91505092915050565b6000806040838503121561378757600080fd5b600083013567ffffffffffffffff8111156137a157600080fd5b6137ad8582860161346b565b925050602083013567ffffffffffffffff8111156137ca57600080fd5b6137d6858286016133ae565b9150509250929050565b60008060008060008060c087890312156137f957600080fd5b600087013567ffffffffffffffff81111561381357600080fd5b61381f89828a0161346b565b965050602087013567ffffffffffffffff81111561383c57600080fd5b61384889828a016133ae565b955050604061385989828a01613384565b945050606061386a89828a01613495565b935050608087013567ffffffffffffffff81111561388757600080fd5b61389389828a01613417565b92505060a06138a489828a01613456565b9150509295509295509295565b600080600080600080600060e0888a0312156138cc57600080fd5b600088013567ffffffffffffffff8111156138e657600080fd5b6138f28a828b0161346b565b975050602088013567ffffffffffffffff81111561390f57600080fd5b61391b8a828b016133ae565b965050604061392c8a828b01613384565b955050606061393d8a828b01613495565b945050608088013567ffffffffffffffff81111561395a57600080fd5b6139668a828b01613417565b93505060a06139778a828b01613456565b92505060c06139888a828b01613495565b91505092959891949750929550565b6000806000606084860312156139ac57600080fd5b600084013567ffffffffffffffff8111156139c657600080fd5b6139d28682870161346b565b935050602084013567ffffffffffffffff8111156139ef57600080fd5b6139fb868287016133ae565b9250506040613a0c86828701613495565b9150509250925092565b60008060408385031215613a2957600080fd5b600083013567ffffffffffffffff811115613a4357600080fd5b613a4f8582860161346b565b9250506020613a6085828601613495565b9150509250929050565b600060208284031215613a7c57600080fd5b6000613a8a84828501613495565b91505092915050565b600060208284031215613aa557600080fd5b6000613ab3848285016134aa565b91505092915050565b600060208284031215613ace57600080fd5b6000613adc848285016134bf565b91505092915050565b600060208284031215613af757600080fd5b6000613b05848285016134d4565b91505092915050565b6000613b1a8383613bee565b60208301905092915050565b613b2f81615034565b82525050565b613b3e81615022565b82525050565b613b55613b5082615022565b615255565b82525050565b6000613b6682614e3c565b613b708185614e6a565b9350613b7b83614e2c565b8060005b83811015613bac578151613b938882613b0e565b9750613b9e83614e5d565b925050600181019050613b7f565b5085935050505092915050565b613bc281615046565b82525050565b613bd9613bd482615052565b615267565b82525050565b613be8816150aa565b82525050565b613bf7816150aa565b82525050565b613c0e613c09826150aa565b61527b565b82525050565b613c25613c208261507e565b615271565b82525050565b613c34816150b4565b82525050565b6000613c4582614e47565b613c4f8185614e75565b9350613c5f8185602086016151d9565b613c68816153a0565b840191505092915050565b613c7c8161514c565b82525050565b613c93613c8e8261514c565b615255565b82525050565b613ca281615170565b82525050565b613cb9613cb482615170565b615255565b82525050565b613cc881615194565b82525050565b613cd7816151a6565b82525050565b613ce6816151b8565b82525050565b6000613cf782614e52565b613d018185614e86565b9350613d118185602086016151d9565b613d1a816153a0565b840191505092915050565b6000613d3082614e52565b613d3a8185614e97565b9350613d4a8185602086016151d9565b80840191505092915050565b6000613d63602583614e86565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dc9602683614e86565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e2f602083614e86565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000613e6f601f83614e86565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000613eaf601a83614e86565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000613eef602383614e86565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f55601683614e86565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000613f95601283614e86565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000613fd5601e83614e86565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000614015602e83614e86565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061407b604483614e86565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614107601b83614e86565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000614147601983614e86565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000614187602583614e86565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141ed602083614e86565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061422d602883614e86565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614293601e83614e86565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b60006142d3602083614e86565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000614313602083614e86565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000614353601c83614e86565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000614393602083614e86565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b60006143d3602883614e86565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614439601d83614e86565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000614479601c83614e86565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b60006144b9601983614e86565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b60006144f9601b83614e86565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61453581615125565b82525050565b61454c61454782615125565b615297565b82525050565b61455b8161512f565b82525050565b61457261456d8261512f565b6152a1565b82525050565b60006145848284613b5b565b915081905092915050565b600061459b8287613bc8565b6001820191506145ab8286613bc8565b6001820191506145bb8285613bfd565b6020820191506145cb8284613bfd565b60208201915081905095945050505050565b60006145e9828a613bfd565b6020820191506145f98289613b44565b6014820191506146098288614561565b600482019150614619828761453b565b6020820191506146298286613c82565b6014820191506146398285613ca8565b601482019150614649828461453b565b60208201915081905098975050505050505050565b600061466a8284613d25565b915081905092915050565b60006146818286613d25565b915061468d8285613c14565b60038201915061469d8284613d25565b9150819050949350505050565b60006146b6828661453b565b6020820191506146c68285614561565b6004820191506146d68284613d25565b9150819050949350505050565b60006020820190506146f86000830184613b35565b92915050565b60006080820190506147136000830187613b35565b614720602083018661452c565b81810360408301526147328185613c3a565b90506147416060830184613cbf565b95945050505050565b600061016082019050614760600083018e613b35565b61476d602083018d61452c565b818103604083015261477f818c613c3a565b905061478e606083018b613cbf565b61479b608083018a613cce565b6147a860a0830189613cce565b6147b560c0830188613cce565b6147c260e0830187613b35565b6147d0610100830186613b26565b8181036101208301526147e38185613c3a565b90506147f3610140830184613b35565b9c9b505050505050505050505050565b60006020820190506148186000830184613bb9565b92915050565b60006020820190506148336000830184613bdf565b92915050565b600060c08201905061484e6000830189613bdf565b61485b6020830188613b35565b614868604083018761452c565b6148756060830186613bdf565b6148826080830185613cbf565b61488f60a083018461452c565b979650505050505050565b60006040820190506148af6000830185613bdf565b6148bc6020830184613bb9565b9392505050565b60006060820190506148d86000830186613bdf565b6148e5602083018561452c565b6148f26040830184613c99565b949350505050565b600060208201905061490f6000830184613c2b565b92915050565b6000602082019050818103600083015261492f8184613c3a565b905092915050565b600060208201905061494c6000830184613c73565b92915050565b6000602082019050818103600083015261496c8184613cec565b905092915050565b6000602082019050818103600083015261498d81613d56565b9050919050565b600060208201905081810360008301526149ad81613dbc565b9050919050565b600060208201905081810360008301526149cd81613e22565b9050919050565b600060208201905081810360008301526149ed81613e62565b9050919050565b60006020820190508181036000830152614a0d81613ea2565b9050919050565b60006020820190508181036000830152614a2d81613ee2565b9050919050565b60006020820190508181036000830152614a4d81613f48565b9050919050565b60006020820190508181036000830152614a6d81613f88565b9050919050565b60006020820190508181036000830152614a8d81613fc8565b9050919050565b60006020820190508181036000830152614aad81614008565b9050919050565b60006020820190508181036000830152614acd8161406e565b9050919050565b60006020820190508181036000830152614aed816140fa565b9050919050565b60006020820190508181036000830152614b0d8161413a565b9050919050565b60006020820190508181036000830152614b2d8161417a565b9050919050565b60006020820190508181036000830152614b4d816141e0565b9050919050565b60006020820190508181036000830152614b6d81614220565b9050919050565b60006020820190508181036000830152614b8d81614286565b9050919050565b60006020820190508181036000830152614bad816142c6565b9050919050565b60006020820190508181036000830152614bcd81614306565b9050919050565b60006020820190508181036000830152614bed81614346565b9050919050565b60006020820190508181036000830152614c0d81614386565b9050919050565b60006020820190508181036000830152614c2d816143c6565b9050919050565b60006020820190508181036000830152614c4d8161442c565b9050919050565b60006020820190508181036000830152614c6d8161446c565b9050919050565b60006020820190508181036000830152614c8d816144ac565b9050919050565b60006020820190508181036000830152614cad816144ec565b9050919050565b6000602082019050614cc9600083018461452c565b92915050565b600061010082019050614ce5600083018b61452c565b8181036020830152614cf7818a613cec565b9050614d066040830189613b35565b614d136060830188614552565b614d206080830187613cdd565b614d2d60a083018661452c565b614d3a60c083018561452c565b614d4760e0830184613cce565b9998505050505050505050565b6000602082019050614d696000830184614552565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614d9657614d95615371565b5b8060405250919050565b600067ffffffffffffffff821115614dbb57614dba615371565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614de757614de6615371565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e1757614e16615371565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614ead82615125565b9150614eb883615125565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614eed57614eec6152e4565b5b828201905092915050565b6000614f038261513f565b9150614f0e8361513f565b92508260ff03821115614f2457614f236152e4565b5b828201905092915050565b6000614f3a8261513f565b9150614f458361513f565b925082614f5557614f54615313565b5b828204905092915050565b6000614f6b82615125565b9150614f7683615125565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614faf57614fae6152e4565b5b828202905092915050565b6000614fc582615125565b9150614fd083615125565b925082821015614fe357614fe26152e4565b5b828203905092915050565b6000614ff98261512f565b91506150048361512f565b925082821015615017576150166152e4565b5b828203905092915050565b600061502d82615105565b9050919050565b600061503f82615105565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006150eb82615022565b9050919050565b6000819050615100826153cb565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006151578261515e565b9050919050565b600061516982615105565b9050919050565b600061517b82615182565b9050919050565b600061518d82615105565b9050919050565b600061519f826150f2565b9050919050565b60006151b182615125565b9050919050565b60006151c38261512f565b9050919050565b82818337600083830152505050565b60005b838110156151f75780820151818401526020810190506151dc565b83811115615206576000848401525b50505050565b600061521782615125565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561524a576152496152e4565b5b600182019050919050565b600061526082615285565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000615290826153be565b9050919050565b6000819050919050565b60006152ac826153b1565b9050919050565b60006152be8261513f565b91506152c98361513f565b9250826152d9576152d8615313565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b600281106153dc576153db615342565b5b50565b6153e881615022565b81146153f357600080fd5b50565b6153ff81615034565b811461540a57600080fd5b50565b61541681615046565b811461542157600080fd5b50565b61542d816150aa565b811461543857600080fd5b50565b615444816150e0565b811461544f57600080fd5b50565b6002811061545f57600080fd5b50565b61546b81615125565b811461547657600080fd5b50565b6154828161512f565b811461548d57600080fd5b5056fea2646970667358221220d559ed7fe88f64fb3cbae5372b750f887d5d5e2c6c514727798a965b8cd0de1464736f6c63430008000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102535760003560e01c8063776d1a0111610146578063b5a73e75116100c3578063d4b8399211610087578063d4b839921461069a578063dc89a198146106b8578063e19a9dd9146106e8578063e319044b14610704578063f2fde38b14610720578063ff0394eb1461073c57610253565b8063b5a73e75146105f4578063c910638914610612578063cc3b43b114610630578063cd3ef95114610660578063d07acb5b1461067c57610253565b80638dcd26611161010a5780638dcd2661146105665780639a674ed114610582578063a4f9edbf1461059e578063aa7517e1146105ba578063b0eefabe146105d857610253565b8063776d1a01146104d25780637ceab3b1146104ee5780637dc0d1d01461050c57806388633b7b1461052a5780638da5cb5b1461054857610253565b806339eafa6f116101d45780635aef7de6116101985780635aef7de6146104545780635fc1188d146104725780636775ef691461048e5780636f2ddd93146104aa578063715018a6146104c857610253565b806339eafa6f1461038c5780633ea3c146146103bc578063425a2a3c146103d857806345c7980e146104085780634e1b83741461042457610253565b80631db61b541161021b5780631db61b54146102e857806321e314cb146103065780632351a877146103225780632b5000411461033e5780633408e4701461036e57610253565b8063086cfca8146102585780631138a87e1461027457806314604b8c1461029057806314f5a395146102ac5780631ba18b9b146102ca575b600080fd5b610272600480360381019061026d91906134e9565b61075a565b005b61028e60048036038101906102899190613997565b61089c565b005b6102aa60048036038101906102a591906138b1565b610b6d565b005b6102b4611235565b6040516102c19190614d54565b60405180910390f35b6102d261124b565b6040516102df9190614d54565b60405180910390f35b6102f0611261565b6040516102fd919061481e565b60405180910390f35b610320600480360381019061031b9190613abc565b611288565b005b61033c600480360381019061033791906137e0565b6113a6565b005b610358600480360381019061035391906135ed565b6113be565b604051610365919061481e565b60405180910390f35b6103766113df565b6040516103839190614cb4565b60405180910390f35b6103a660048036038101906103a19190613774565b6113ec565b6040516103b39190614952565b60405180910390f35b6103d660048036038101906103d191906136a5565b611454565b005b6103f260048036038101906103ed91906135ed565b61150e565b6040516103ff9190614915565b60405180910390f35b610422600480360381019061041d9190613774565b611609565b005b61043e600480360381019061043991906136f7565b611632565b60405161044b9190614803565b60405180910390f35b61045c611661565b60405161046991906146e3565b60405180910390f35b61048c60048036038101906104879190613a6a565b611687565b005b6104a860048036038101906104a39190613abc565b61170d565b005b6104b26117f6565b6040516104bf9190614cb4565b60405180910390f35b6104d06117fc565b005b6104ec60048036038101906104e791906134e9565b611884565b005b6104f66119c6565b60405161050391906146e3565b60405180910390f35b6105146119ec565b6040516105219190614937565b60405180910390f35b610532611a12565b60405161053f919061481e565b60405180910390f35b610550611a39565b60405161055d91906146e3565b60405180910390f35b610580600480360381019061057b9190613774565b611a63565b005b61059c60048036038101906105979190613abc565b611a73565b005b6105b860048036038101906105b39190613733565b611b8b565b005b6105c2611fa4565b6040516105cf9190614cb4565b60405180910390f35b6105f260048036038101906105ed91906134e9565b611faa565b005b6105fc61206a565b60405161060991906146e3565b60405180910390f35b61061a612090565b60405161062791906146e3565b60405180910390f35b61064a60048036038101906106459190613a16565b6120ba565b604051610657919061481e565b60405180910390f35b61067a60048036038101906106759190613a6a565b612181565b005b610684612207565b6040516106919190614d54565b60405180910390f35b6106a261221d565b6040516106af91906146e3565b60405180910390f35b6106d260048036038101906106cd91906136a5565b612243565b6040516106df919061481e565b60405180910390f35b61070260048036038101906106fd91906134e9565b61225b565b005b61071e600480360381019061071991906136a5565b612491565b005b61073a600480360381019061073591906134e9565b6127ee565b005b6107446128e6565b604051610751919061481e565b60405180910390f35b61076261290d565b73ffffffffffffffffffffffffffffffffffffffff16610780611a39565b73ffffffffffffffffffffffffffffffffffffffff16146107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90614b34565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006108a884846113ec565b90506000818051906020012090506000831115610a52576000606c60008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490614b54565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b81526004016109bc919061481e565b60206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906136ce565b14610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390614b14565b60405180910390fd5b50610aab565b6000801b606c60008381526020019081526020016000205414610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190614a14565b60405180910390fd5b5b6000610ab783856120ba565b905080606c6000848152602001908152602001600020819055506000610add8486612915565b9050808214610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614a34565b60405180910390fd5b86604051610b2f919061465e565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050565b6000610b7988886113ec565b8051906020012090506000606c60008381526020019081526020016000205490506000801b811415610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790614c14565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90614c34565b60405180910390fd5b6000610c5588888888886113be565b905080898581518110610c91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614c94565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610d39919061481e565b60206040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8991906136ce565b14610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090614c54565b60405180910390fd5b6000606b5490506000811480610e895750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610e35919061481e565b60206040518083038186803b158015610e4d57600080fd5b505afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190613a93565b8111155b610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906149b4565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610f25919061481e565b60206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190613ae5565b905042606a60049054906101000a900463ffffffff1663ffffffff168263ffffffff16610fa29190614ea2565b10610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990614bd4565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806110255750428163ffffffff168363ffffffff166110229190614ea2565b10155b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90614a54565b60405180910390fd5b60008714806110ed5750606d600087815260200190815260200160002060008d60018a6110919190614fba565b815181106110c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b61112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390614974565b60405180910390fd5b606d6000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614bb4565b60405180910390fd5b6001606d6000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e78b8b8b8b612a14565b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614c74565b60405180910390fd5b50505050505050505050505050565b606a60049054906101000a900463ffffffff1681565b606a60009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b61129061290d565b73ffffffffffffffffffffffffffffffffffffffff166112ae611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614b34565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806113425750603c82826113399190614fee565b63ffffffff1610155b611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614ab4565b60405180910390fd5b81606a60046101000a81548163ffffffff021916908363ffffffff1602179055505050565b6113b68686868686866000610b6d565b505050505050565b60006113cd868686868661150e565b80519060200120905095945050505050565b6000804690508091505090565b6060600061141f836040516020016114049190614578565b60405160208183030381529060405280519060200120612d09565b90508362e2909f60e81b8260405160200161143c93929190614675565b60405160208183030381529060405291505092915050565b61145c61290d565b73ffffffffffffffffffffffffffffffffffffffff1661147a611a39565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790614b34565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6060600061151a6113df565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611556939291906148c3565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016115b596959493929190614839565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016115ec949392919061458f565b604051602081830303815290604052935050505095945050505050565b600061161583836113ec565b905060008180519060200120905061162c81611454565b50505050565b606d6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61168f61290d565b73ffffffffffffffffffffffffffffffffffffffff166116ad611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614b34565b60405180910390fd5b8060698190555050565b61171561290d565b73ffffffffffffffffffffffffffffffffffffffff16611733611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090614b34565b60405180910390fd5b60008163ffffffff16116117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614ad4565b60405180910390fd5b80606a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60695481565b61180461290d565b73ffffffffffffffffffffffffffffffffffffffff16611822611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614b34565b60405180910390fd5b6118826000612eee565b565b61188c61290d565b73ffffffffffffffffffffffffffffffffffffffff166118aa611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614b34565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a6f8282600061089c565b5050565b611a7b61290d565b73ffffffffffffffffffffffffffffffffffffffff16611a99611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614b34565b60405180910390fd5b60008163ffffffff161480611b285750603c606a60049054906101000a900463ffffffff1682611b1f9190614fee565b63ffffffff1610155b611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614ab4565b60405180910390fd5b80606a60086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000806000806000806000806000808a806020019051810190611bae9190613512565b9950995099509950995099509950995099509950611bca612fb4565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614b74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614a74565b60405180910390fd5b60008663ffffffff1611611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614ad4565b60405180910390fd5b60008463ffffffff161480611d1a5750603c8585611d119190614fee565b63ffffffff1610155b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614ab4565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550611ed78a6127ee565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f8f91906146e3565b60405180910390a45050505050505050505050565b606b5481565b611fb261290d565b73ffffffffffffffffffffffffffffffffffffffff16611fd0611a39565b73ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614b34565b60405180910390fd5b80606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806069546000856040516020016120d5939291906146aa565b60405160208183030381529060405280519060200120905080606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16606b54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308860405160200161216297969594939291906145dd565b6040516020818303038152906040528051906020012091505092915050565b61218961290d565b73ffffffffffffffffffffffffffffffffffffffff166121a7611a39565b73ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614b34565b60405180910390fd5b80606b8190555050565b606a60089054906101000a900463ffffffff1681565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606c6020528060005260406000206000915090505481565b61226361290d565b73ffffffffffffffffffffffffffffffffffffffff16612281611a39565b73ffffffffffffffffffffffffffffffffffffffff16146122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce90614b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123f4578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161236491906148fa565b60206040518083038186803b15801561237c57600080fd5b505afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b4919061367c565b6123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614b94565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161248691906146e3565b60405180910390a150565b6000606a60089054906101000a900463ffffffff16905060008163ffffffff16116124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e890614af4565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906149d4565b60405180910390fd5b6000801b8114156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614c14565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401612615919061481e565b60206040518083038186803b15801561262d57600080fd5b505afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906136ce565b146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614bf4565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401612702919061481e565b60206040518083038186803b15801561271a57600080fd5b505afa15801561272e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127529190613ae5565b9050428363ffffffff168263ffffffff1661276d9190614ea2565b106127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a4906149f4565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008681526020019081526020016000208190555050505050565b6127f661290d565b73ffffffffffffffffffffffffffffffffffffffff16612814611a39565b73ffffffffffffffffffffffffffffffffffffffff161461286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190614b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d190614994565b60405180910390fd5b6128e381612eee565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352debac360695485606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16600088606b5460006040518963ffffffff1660e01b81526004016129ba989796959493929190614ccf565b602060405180830381600087803b1580156129d457600080fd5b505af11580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c91906136ce565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4657606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b139b9a9998979695949392919061474a565b600060405180830381600087803b158015612b2d57600080fd5b505af1158015612b41573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612ba794939291906146fe565b602060405180830381600087803b158015612bc157600080fd5b505af1158015612bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf9919061367c565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d0157606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612cce92919061489a565b600060405180830381600087803b158015612ce857600080fd5b505af1158015612cfc573d6000803e3d6000fd5b505050505b949350505050565b60606000604067ffffffffffffffff811115612d4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612d805781602001600182028036833780820191505090505b50905060005b6020811015612ee4576000600882612d9e9190614f60565b85901b60f81c90506000601082612db59190614f2f565b90506000601083612dc691906152b3565b9050612dd18261309d565b85856002612ddf9190614f60565b81518110612e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612e4e8161309d565b856001866002612e5e9190614f60565b612e689190614ea2565b81518110612e9f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080612edc9061520c565b915050612d86565b5080915050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612fda575060008054906101000a900460ff16155b613019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301090614a94565b60405180910390fd5b60008060019054906101000a900460ff161590508015613069576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6130716130da565b6130796131b3565b801561309a5760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156130c2576030826130b89190614ef8565b60f81b90506130d5565b6057826130cf9190614ef8565b60f81b90505b919050565b600060019054906101000a900460ff1680613100575060008054906101000a900460ff16155b61313f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313690614a94565b60405180910390fd5b60008060019054906101000a900460ff16159050801561318f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156131b05760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806131d9575060008054906101000a900460ff16155b613218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320f90614a94565b60405180910390fd5b60008060019054906101000a900460ff161590508015613268576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61327861327361290d565b612eee565b80156132995760008060016101000a81548160ff0219169083151502179055505b50565b60006132af6132aa84614da0565b614d6f565b905080838252602082019050828560208602820111156132ce57600080fd5b60005b858110156132fe57816132e488826133ed565b8452602084019350602083019250506001810190506132d1565b5050509392505050565b600061331b61331684614dcc565b614d6f565b90508281526020810184848401111561333357600080fd5b61333e8482856151ca565b509392505050565b600061335961335484614dfc565b614d6f565b90508281526020810184848401111561337157600080fd5b61337c8482856151ca565b509392505050565b600081359050613393816153df565b92915050565b6000815190506133a8816153f6565b92915050565b600082601f8301126133bf57600080fd5b81356133cf84826020860161329c565b91505092915050565b6000815190506133e78161540d565b92915050565b6000813590506133fc81615424565b92915050565b60008151905061341181615424565b92915050565b600082601f83011261342857600080fd5b8135613438848260208601613308565b91505092915050565b6000815190506134508161543b565b92915050565b60008135905061346581615452565b92915050565b600082601f83011261347c57600080fd5b813561348c848260208601613346565b91505092915050565b6000813590506134a481615462565b92915050565b6000815190506134b981615462565b92915050565b6000813590506134ce81615479565b92915050565b6000815190506134e381615479565b92915050565b6000602082840312156134fb57600080fd5b600061350984828501613384565b91505092915050565b6000806000806000806000806000806101408b8d03121561353257600080fd5b60006135408d828e01613399565b9a505060206135518d828e01613399565b99505060406135628d828e01613399565b98505060606135738d828e01613441565b97505060806135848d828e016134d4565b96505060a06135958d828e016134d4565b95505060c06135a68d828e016134d4565b94505060e06135b78d828e016134aa565b9350506101006135c98d828e016134aa565b9250506101206135db8d828e01613399565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561360557600080fd5b600061361388828901613384565b955050602061362488828901613495565b945050604086013567ffffffffffffffff81111561364157600080fd5b61364d88828901613417565b935050606061365e88828901613456565b925050608061366f88828901613495565b9150509295509295909350565b60006020828403121561368e57600080fd5b600061369c848285016133d8565b91505092915050565b6000602082840312156136b757600080fd5b60006136c5848285016133ed565b91505092915050565b6000602082840312156136e057600080fd5b60006136ee84828501613402565b91505092915050565b6000806040838503121561370a57600080fd5b6000613718858286016133ed565b9250506020613729858286016133ed565b9150509250929050565b60006020828403121561374557600080fd5b600082013567ffffffffffffffff81111561375f57600080fd5b61376b84828501613417565b91505092915050565b6000806040838503121561378757600080fd5b600083013567ffffffffffffffff8111156137a157600080fd5b6137ad8582860161346b565b925050602083013567ffffffffffffffff8111156137ca57600080fd5b6137d6858286016133ae565b9150509250929050565b60008060008060008060c087890312156137f957600080fd5b600087013567ffffffffffffffff81111561381357600080fd5b61381f89828a0161346b565b965050602087013567ffffffffffffffff81111561383c57600080fd5b61384889828a016133ae565b955050604061385989828a01613384565b945050606061386a89828a01613495565b935050608087013567ffffffffffffffff81111561388757600080fd5b61389389828a01613417565b92505060a06138a489828a01613456565b9150509295509295509295565b600080600080600080600060e0888a0312156138cc57600080fd5b600088013567ffffffffffffffff8111156138e657600080fd5b6138f28a828b0161346b565b975050602088013567ffffffffffffffff81111561390f57600080fd5b61391b8a828b016133ae565b965050604061392c8a828b01613384565b955050606061393d8a828b01613495565b945050608088013567ffffffffffffffff81111561395a57600080fd5b6139668a828b01613417565b93505060a06139778a828b01613456565b92505060c06139888a828b01613495565b91505092959891949750929550565b6000806000606084860312156139ac57600080fd5b600084013567ffffffffffffffff8111156139c657600080fd5b6139d28682870161346b565b935050602084013567ffffffffffffffff8111156139ef57600080fd5b6139fb868287016133ae565b9250506040613a0c86828701613495565b9150509250925092565b60008060408385031215613a2957600080fd5b600083013567ffffffffffffffff811115613a4357600080fd5b613a4f8582860161346b565b9250506020613a6085828601613495565b9150509250929050565b600060208284031215613a7c57600080fd5b6000613a8a84828501613495565b91505092915050565b600060208284031215613aa557600080fd5b6000613ab3848285016134aa565b91505092915050565b600060208284031215613ace57600080fd5b6000613adc848285016134bf565b91505092915050565b600060208284031215613af757600080fd5b6000613b05848285016134d4565b91505092915050565b6000613b1a8383613bee565b60208301905092915050565b613b2f81615034565b82525050565b613b3e81615022565b82525050565b613b55613b5082615022565b615255565b82525050565b6000613b6682614e3c565b613b708185614e6a565b9350613b7b83614e2c565b8060005b83811015613bac578151613b938882613b0e565b9750613b9e83614e5d565b925050600181019050613b7f565b5085935050505092915050565b613bc281615046565b82525050565b613bd9613bd482615052565b615267565b82525050565b613be8816150aa565b82525050565b613bf7816150aa565b82525050565b613c0e613c09826150aa565b61527b565b82525050565b613c25613c208261507e565b615271565b82525050565b613c34816150b4565b82525050565b6000613c4582614e47565b613c4f8185614e75565b9350613c5f8185602086016151d9565b613c68816153a0565b840191505092915050565b613c7c8161514c565b82525050565b613c93613c8e8261514c565b615255565b82525050565b613ca281615170565b82525050565b613cb9613cb482615170565b615255565b82525050565b613cc881615194565b82525050565b613cd7816151a6565b82525050565b613ce6816151b8565b82525050565b6000613cf782614e52565b613d018185614e86565b9350613d118185602086016151d9565b613d1a816153a0565b840191505092915050565b6000613d3082614e52565b613d3a8185614e97565b9350613d4a8185602086016151d9565b80840191505092915050565b6000613d63602583614e86565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dc9602683614e86565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e2f602083614e86565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000613e6f601f83614e86565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000613eaf601a83614e86565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000613eef602383614e86565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f55601683614e86565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000613f95601283614e86565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000613fd5601e83614e86565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000614015602e83614e86565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600061407b604483614e86565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614107601b83614e86565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000614147601983614e86565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000614187602583614e86565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141ed602083614e86565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061422d602883614e86565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614293601e83614e86565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b60006142d3602083614e86565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000614313602083614e86565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000614353601c83614e86565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000614393602083614e86565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b60006143d3602883614e86565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614439601d83614e86565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000614479601c83614e86565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b60006144b9601983614e86565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b60006144f9601b83614e86565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61453581615125565b82525050565b61454c61454782615125565b615297565b82525050565b61455b8161512f565b82525050565b61457261456d8261512f565b6152a1565b82525050565b60006145848284613b5b565b915081905092915050565b600061459b8287613bc8565b6001820191506145ab8286613bc8565b6001820191506145bb8285613bfd565b6020820191506145cb8284613bfd565b60208201915081905095945050505050565b60006145e9828a613bfd565b6020820191506145f98289613b44565b6014820191506146098288614561565b600482019150614619828761453b565b6020820191506146298286613c82565b6014820191506146398285613ca8565b601482019150614649828461453b565b60208201915081905098975050505050505050565b600061466a8284613d25565b915081905092915050565b60006146818286613d25565b915061468d8285613c14565b60038201915061469d8284613d25565b9150819050949350505050565b60006146b6828661453b565b6020820191506146c68285614561565b6004820191506146d68284613d25565b9150819050949350505050565b60006020820190506146f86000830184613b35565b92915050565b60006080820190506147136000830187613b35565b614720602083018661452c565b81810360408301526147328185613c3a565b90506147416060830184613cbf565b95945050505050565b600061016082019050614760600083018e613b35565b61476d602083018d61452c565b818103604083015261477f818c613c3a565b905061478e606083018b613cbf565b61479b608083018a613cce565b6147a860a0830189613cce565b6147b560c0830188613cce565b6147c260e0830187613b35565b6147d0610100830186613b26565b8181036101208301526147e38185613c3a565b90506147f3610140830184613b35565b9c9b505050505050505050505050565b60006020820190506148186000830184613bb9565b92915050565b60006020820190506148336000830184613bdf565b92915050565b600060c08201905061484e6000830189613bdf565b61485b6020830188613b35565b614868604083018761452c565b6148756060830186613bdf565b6148826080830185613cbf565b61488f60a083018461452c565b979650505050505050565b60006040820190506148af6000830185613bdf565b6148bc6020830184613bb9565b9392505050565b60006060820190506148d86000830186613bdf565b6148e5602083018561452c565b6148f26040830184613c99565b949350505050565b600060208201905061490f6000830184613c2b565b92915050565b6000602082019050818103600083015261492f8184613c3a565b905092915050565b600060208201905061494c6000830184613c73565b92915050565b6000602082019050818103600083015261496c8184613cec565b905092915050565b6000602082019050818103600083015261498d81613d56565b9050919050565b600060208201905081810360008301526149ad81613dbc565b9050919050565b600060208201905081810360008301526149cd81613e22565b9050919050565b600060208201905081810360008301526149ed81613e62565b9050919050565b60006020820190508181036000830152614a0d81613ea2565b9050919050565b60006020820190508181036000830152614a2d81613ee2565b9050919050565b60006020820190508181036000830152614a4d81613f48565b9050919050565b60006020820190508181036000830152614a6d81613f88565b9050919050565b60006020820190508181036000830152614a8d81613fc8565b9050919050565b60006020820190508181036000830152614aad81614008565b9050919050565b60006020820190508181036000830152614acd8161406e565b9050919050565b60006020820190508181036000830152614aed816140fa565b9050919050565b60006020820190508181036000830152614b0d8161413a565b9050919050565b60006020820190508181036000830152614b2d8161417a565b9050919050565b60006020820190508181036000830152614b4d816141e0565b9050919050565b60006020820190508181036000830152614b6d81614220565b9050919050565b60006020820190508181036000830152614b8d81614286565b9050919050565b60006020820190508181036000830152614bad816142c6565b9050919050565b60006020820190508181036000830152614bcd81614306565b9050919050565b60006020820190508181036000830152614bed81614346565b9050919050565b60006020820190508181036000830152614c0d81614386565b9050919050565b60006020820190508181036000830152614c2d816143c6565b9050919050565b60006020820190508181036000830152614c4d8161442c565b9050919050565b60006020820190508181036000830152614c6d8161446c565b9050919050565b60006020820190508181036000830152614c8d816144ac565b9050919050565b60006020820190508181036000830152614cad816144ec565b9050919050565b6000602082019050614cc9600083018461452c565b92915050565b600061010082019050614ce5600083018b61452c565b8181036020830152614cf7818a613cec565b9050614d066040830189613b35565b614d136060830188614552565b614d206080830187613cdd565b614d2d60a083018661452c565b614d3a60c083018561452c565b614d4760e0830184613cce565b9998505050505050505050565b6000602082019050614d696000830184614552565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614d9657614d95615371565b5b8060405250919050565b600067ffffffffffffffff821115614dbb57614dba615371565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614de757614de6615371565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e1757614e16615371565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614ead82615125565b9150614eb883615125565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614eed57614eec6152e4565b5b828201905092915050565b6000614f038261513f565b9150614f0e8361513f565b92508260ff03821115614f2457614f236152e4565b5b828201905092915050565b6000614f3a8261513f565b9150614f458361513f565b925082614f5557614f54615313565b5b828204905092915050565b6000614f6b82615125565b9150614f7683615125565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614faf57614fae6152e4565b5b828202905092915050565b6000614fc582615125565b9150614fd083615125565b925082821015614fe357614fe26152e4565b5b828203905092915050565b6000614ff98261512f565b91506150048361512f565b925082821015615017576150166152e4565b5b828203905092915050565b600061502d82615105565b9050919050565b600061503f82615105565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006150eb82615022565b9050919050565b6000819050615100826153cb565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006151578261515e565b9050919050565b600061516982615105565b9050919050565b600061517b82615182565b9050919050565b600061518d82615105565b9050919050565b600061519f826150f2565b9050919050565b60006151b182615125565b9050919050565b60006151c38261512f565b9050919050565b82818337600083830152505050565b60005b838110156151f75780820151818401526020810190506151dc565b83811115615206576000848401525b50505050565b600061521782615125565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561524a576152496152e4565b5b600182019050919050565b600061526082615285565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000615290826153be565b9050919050565b6000819050919050565b60006152ac826153b1565b9050919050565b60006152be8261513f565b91506152c98361513f565b9250826152d9576152d8615313565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b600281106153dc576153db615342565b5b50565b6153e881615022565b81146153f357600080fd5b50565b6153ff81615034565b811461540a57600080fd5b50565b61541681615046565b811461542157600080fd5b50565b61542d816150aa565b811461543857600080fd5b50565b615444816150e0565b811461544f57600080fd5b50565b6002811061545f57600080fd5b50565b61546b81615125565b811461547657600080fd5b50565b6154828161512f565b811461548d57600080fd5b5056fea2646970667358221220d559ed7fe88f64fb3cbae5372b750f887d5d5e2c6c514727798a965b8cd0de1464736f6c63430008000033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/RealityModuleETH.json b/packages/app/src/contracts/RealityModuleETH.json deleted file mode 100644 index ebc9cfd9..00000000 --- a/packages/app/src/contracts/RealityModuleETH.json +++ /dev/null @@ -1,880 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "RealityModuleETH", - "sourceName": "contracts/RealityModuleETH.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "contract RealitioV3", - "name": "_oracle", - "type": "address" - }, - { - "internalType": "uint32", - "name": "timeout", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "cooldown", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "expiration", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "bond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "templateId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "arbitrator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "questionId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "string", - "name": "proposalId", - "type": "string" - } - ], - "name": "ProposalQuestionCreated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "RealityModuleSetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "INVALIDATED", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TRANSACTION_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "addProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "addProposalWithNonce", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "answerExpiration", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "buildQuestion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "txIndex", - "type": "uint256" - } - ], - "name": "executeProposalWithIndex", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "executedProposalTransactions", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "generateTransactionHashData", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "question", - "type": "string" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "getQuestionId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "txHashes", - "type": "bytes32[]" - } - ], - "name": "markProposalAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "questionHash", - "type": "bytes32" - } - ], - "name": "markProposalAsInvalidByHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "questionHash", - "type": "bytes32" - } - ], - "name": "markProposalWithExpiredAnswerAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "oracle", - "outputs": [ - { - "internalType": "contract RealitioV3", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionArbitrator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionCooldown", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "questionIds", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "questionTimeout", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "expiration", - "type": "uint32" - } - ], - "name": "setAnswerExpiration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "arbitrator", - "type": "address" - } - ], - "name": "setArbitrator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "bond", - "type": "uint256" - } - ], - "name": "setMinimumBond", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "cooldown", - "type": "uint32" - } - ], - "name": "setQuestionCooldown", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "timeout", - "type": "uint32" - } - ], - "name": "setQuestionTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "templateId", - "type": "uint256" - } - ], - "name": "setTemplate", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "template", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620066e3380380620066e3833981810160405281019062000037919062000b2f565b8989898989898989898960008a8a8a8a8a8a8a8a8a8a604051602001620000689a9998979695949392919062000ee6565b60405160208183030381529060405290506200008a81620000a560201b60201c565b5050505050505050505050505050505050505050506200121f565b6000806000806000806000806000808a806020019051810190620000ca919062000a3f565b9950995099509950995099509950995099509950620000ee620004e160201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141562000161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001589062001062565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415620001d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001cb9062000fb8565b60405180910390fd5b60008663ffffffff161162000220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000217906200101e565b60405180910390fd5b60008463ffffffff1614806200024a5750603c858562000241919062001095565b63ffffffff1610155b6200028c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002839062000ffc565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550620004128a620005e060201b60201c565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620004cc919062000ec9565b60405180910390a45050505050505050505050565b600060019054906101000a900460ff168062000508575060008054906101000a900460ff16155b6200054a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005419062000fda565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200059b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620005ab620006f660201b60201c565b620005bb620007d560201b60201c565b8015620005dd5760008060016101000a81548160ff0219169083151502179055505b50565b620005f0620008d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000616620008dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200066f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006669062001040565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620006e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d99062000f96565b60405180910390fd5b620006f3816200090660201b60201c565b50565b600060019054906101000a900460ff16806200071d575060008054906101000a900460ff16155b6200075f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007569062000fda565b60405180910390fd5b60008060019054906101000a900460ff161590508015620007b0576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b8015620007d25760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680620007fc575060008054906101000a900460ff16155b6200083e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008359062000fda565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200088f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620008af620008a3620008d460201b60201c565b6200090660201b60201c565b8015620008d15760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620009dd816200119d565b92915050565b600081519050620009f481620011b7565b92915050565b60008151905062000a0b81620011d1565b92915050565b60008151905062000a2281620011eb565b92915050565b60008151905062000a398162001205565b92915050565b6000806000806000806000806000806101408b8d03121562000a6057600080fd5b600062000a708d828e01620009e3565b9a5050602062000a838d828e01620009e3565b995050604062000a968d828e01620009e3565b985050606062000aa98d828e01620009fa565b975050608062000abc8d828e0162000a28565b96505060a062000acf8d828e0162000a28565b95505060c062000ae28d828e0162000a28565b94505060e062000af58d828e0162000a11565b93505061010062000b098d828e0162000a11565b92505061012062000b1d8d828e01620009e3565b9150509295989b9194979a5092959850565b6000806000806000806000806000806101408b8d03121562000b5057600080fd5b600062000b608d828e01620009cc565b9a5050602062000b738d828e01620009cc565b995050604062000b868d828e01620009cc565b985050606062000b998d828e01620009fa565b975050608062000bac8d828e0162000a28565b96505060a062000bbf8d828e0162000a28565b95505060c062000bd28d828e0162000a28565b94505060e062000be58d828e0162000a11565b93505061010062000bf98d828e0162000a11565b92505061012062000c0d8d828e01620009cc565b9150509295989b9194979a5092959850565b62000c2a81620010d0565b82525050565b62000c3b8162001146565b82525050565b600062000c5060268362001084565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000cb8601e8362001084565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b600062000cfa602e8362001084565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b600062000d6260448362001084565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b600062000df0601b8362001084565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b600062000e3260208362001084565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600062000e74601e8362001084565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b62000eb2816200112c565b82525050565b62000ec38162001136565b82525050565b600060208201905062000ee0600083018462000c1f565b92915050565b60006101408201905062000efe600083018d62000c1f565b62000f0d602083018c62000c1f565b62000f1c604083018b62000c1f565b62000f2b606083018a62000c30565b62000f3a608083018962000eb8565b62000f4960a083018862000eb8565b62000f5860c083018762000eb8565b62000f6760e083018662000ea7565b62000f7761010083018562000ea7565b62000f8761012083018462000c1f565b9b9a5050505050505050505050565b6000602082019050818103600083015262000fb18162000c41565b9050919050565b6000602082019050818103600083015262000fd38162000ca9565b9050919050565b6000602082019050818103600083015262000ff58162000ceb565b9050919050565b60006020820190508181036000830152620010178162000d53565b9050919050565b60006020820190508181036000830152620010398162000de1565b9050919050565b600060208201905081810360008301526200105b8162000e23565b9050919050565b600060208201905081810360008301526200107d8162000e65565b9050919050565b600082825260208201905092915050565b6000620010a28262001136565b9150620010af8362001136565b925082821015620010c557620010c46200116e565b5b828203905092915050565b6000620010dd826200110c565b9050919050565b6000620010f1826200110c565b9050919050565b60006200110582620010d0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600062001153826200115a565b9050919050565b600062001167826200110c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b620011a881620010d0565b8114620011b457600080fd5b50565b620011c281620010e4565b8114620011ce57600080fd5b50565b620011dc81620010f8565b8114620011e857600080fd5b50565b620011f6816200112c565b81146200120257600080fd5b50565b620012108162001136565b81146200121c57600080fd5b50565b6154b4806200122f6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c8063776d1a0111610146578063b5a73e75116100c3578063d4b8399211610087578063d4b839921461069a578063dc89a198146106b8578063e19a9dd9146106e8578063e319044b14610704578063f2fde38b14610720578063ff0394eb1461073c57610253565b8063b5a73e75146105f4578063c910638914610612578063cc3b43b114610630578063cd3ef95114610660578063d07acb5b1461067c57610253565b80638dcd26611161010a5780638dcd2661146105665780639a674ed114610582578063a4f9edbf1461059e578063aa7517e1146105ba578063b0eefabe146105d857610253565b8063776d1a01146104d25780637ceab3b1146104ee5780637dc0d1d01461050c57806388633b7b1461052a5780638da5cb5b1461054857610253565b806339eafa6f116101d45780635aef7de6116101985780635aef7de6146104545780635fc1188d146104725780636775ef691461048e5780636f2ddd93146104aa578063715018a6146104c857610253565b806339eafa6f1461038c5780633ea3c146146103bc578063425a2a3c146103d857806345c7980e146104085780634e1b83741461042457610253565b80631db61b541161021b5780631db61b54146102e857806321e314cb146103065780632351a877146103225780632b5000411461033e5780633408e4701461036e57610253565b8063086cfca8146102585780631138a87e1461027457806314604b8c1461029057806314f5a395146102ac5780631ba18b9b146102ca575b600080fd5b610272600480360381019061026d91906134e6565b61075a565b005b61028e60048036038101906102899190613994565b61089c565b005b6102aa60048036038101906102a591906138ae565b610b6d565b005b6102b4611235565b6040516102c19190614d42565b60405180910390f35b6102d261124b565b6040516102df9190614d42565b60405180910390f35b6102f0611261565b6040516102fd919061481b565b60405180910390f35b610320600480360381019061031b9190613ab9565b611288565b005b61033c600480360381019061033791906137dd565b6113a6565b005b610358600480360381019061035391906135ea565b6113be565b604051610365919061481b565b60405180910390f35b6103766113df565b6040516103839190614cb1565b60405180910390f35b6103a660048036038101906103a19190613771565b6113ec565b6040516103b3919061494f565b60405180910390f35b6103d660048036038101906103d191906136a2565b611454565b005b6103f260048036038101906103ed91906135ea565b61150e565b6040516103ff9190614912565b60405180910390f35b610422600480360381019061041d9190613771565b611609565b005b61043e600480360381019061043991906136f4565b611632565b60405161044b9190614800565b60405180910390f35b61045c611661565b60405161046991906146e0565b60405180910390f35b61048c60048036038101906104879190613a67565b611687565b005b6104a860048036038101906104a39190613ab9565b61170d565b005b6104b26117f6565b6040516104bf9190614cb1565b60405180910390f35b6104d06117fc565b005b6104ec60048036038101906104e791906134e6565b611884565b005b6104f66119c6565b60405161050391906146e0565b60405180910390f35b6105146119ec565b6040516105219190614934565b60405180910390f35b610532611a12565b60405161053f919061481b565b60405180910390f35b610550611a39565b60405161055d91906146e0565b60405180910390f35b610580600480360381019061057b9190613771565b611a63565b005b61059c60048036038101906105979190613ab9565b611a73565b005b6105b860048036038101906105b39190613730565b611b8b565b005b6105c2611fa4565b6040516105cf9190614cb1565b60405180910390f35b6105f260048036038101906105ed91906134e6565b611faa565b005b6105fc61206a565b60405161060991906146e0565b60405180910390f35b61061a612090565b60405161062791906146e0565b60405180910390f35b61064a60048036038101906106459190613a13565b6120ba565b604051610657919061481b565b60405180910390f35b61067a60048036038101906106759190613a67565b612181565b005b610684612207565b6040516106919190614d42565b60405180910390f35b6106a261221d565b6040516106af91906146e0565b60405180910390f35b6106d260048036038101906106cd91906136a2565b612243565b6040516106df919061481b565b60405180910390f35b61070260048036038101906106fd91906134e6565b61225b565b005b61071e600480360381019061071991906136a2565b612491565b005b61073a600480360381019061073591906134e6565b6127ee565b005b6107446128e6565b604051610751919061481b565b60405180910390f35b61076261290d565b73ffffffffffffffffffffffffffffffffffffffff16610780611a39565b73ffffffffffffffffffffffffffffffffffffffff16146107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90614b31565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006108a884846113ec565b90506000818051906020012090506000831115610a52576000606c60008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490614b51565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b81526004016109bc919061481b565b60206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906136cb565b14610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390614b11565b60405180910390fd5b50610aab565b6000801b606c60008381526020019081526020016000205414610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190614a11565b60405180910390fd5b5b6000610ab783856120ba565b905080606c6000848152602001908152602001600020819055506000610add8486612915565b9050808214610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614a31565b60405180910390fd5b86604051610b2f919061465b565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050565b6000610b7988886113ec565b8051906020012090506000606c60008381526020019081526020016000205490506000801b811415610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790614c11565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90614c31565b60405180910390fd5b6000610c5588888888886113be565b905080898581518110610c91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614c91565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610d39919061481b565b60206040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8991906136cb565b14610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090614c51565b60405180910390fd5b6000606b5490506000811480610e895750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610e35919061481b565b60206040518083038186803b158015610e4d57600080fd5b505afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190613a90565b8111155b610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906149b1565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610f25919061481b565b60206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190613ae2565b905042606a60049054906101000a900463ffffffff1663ffffffff168263ffffffff16610fa29190614e90565b10610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990614bd1565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806110255750428163ffffffff168363ffffffff166110229190614e90565b10155b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90614a51565b60405180910390fd5b60008714806110ed5750606d600087815260200190815260200160002060008d60018a6110919190614fa8565b815181106110c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b61112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390614971565b60405180910390fd5b606d6000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614bb1565b60405180910390fd5b6001606d6000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e78b8b8b8b612a11565b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614c71565b60405180910390fd5b50505050505050505050505050565b606a60049054906101000a900463ffffffff1681565b606a60009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b61129061290d565b73ffffffffffffffffffffffffffffffffffffffff166112ae611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614b31565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806113425750603c82826113399190614fdc565b63ffffffff1610155b611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614ab1565b60405180910390fd5b81606a60046101000a81548163ffffffff021916908363ffffffff1602179055505050565b6113b68686868686866000610b6d565b505050505050565b60006113cd868686868661150e565b80519060200120905095945050505050565b6000804690508091505090565b6060600061141f836040516020016114049190614575565b60405160208183030381529060405280519060200120612d06565b90508362e2909f60e81b8260405160200161143c93929190614672565b60405160208183030381529060405291505092915050565b61145c61290d565b73ffffffffffffffffffffffffffffffffffffffff1661147a611a39565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790614b31565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6060600061151a6113df565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611556939291906148c0565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016115b596959493929190614836565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016115ec949392919061458c565b604051602081830303815290604052935050505095945050505050565b600061161583836113ec565b905060008180519060200120905061162c81611454565b50505050565b606d6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61168f61290d565b73ffffffffffffffffffffffffffffffffffffffff166116ad611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614b31565b60405180910390fd5b8060698190555050565b61171561290d565b73ffffffffffffffffffffffffffffffffffffffff16611733611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090614b31565b60405180910390fd5b60008163ffffffff16116117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614ad1565b60405180910390fd5b80606a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60695481565b61180461290d565b73ffffffffffffffffffffffffffffffffffffffff16611822611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614b31565b60405180910390fd5b6118826000612eeb565b565b61188c61290d565b73ffffffffffffffffffffffffffffffffffffffff166118aa611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614b31565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a6f8282600061089c565b5050565b611a7b61290d565b73ffffffffffffffffffffffffffffffffffffffff16611a99611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614b31565b60405180910390fd5b60008163ffffffff161480611b285750603c606a60049054906101000a900463ffffffff1682611b1f9190614fdc565b63ffffffff1610155b611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614ab1565b60405180910390fd5b80606a60086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000806000806000806000806000808a806020019051810190611bae919061350f565b9950995099509950995099509950995099509950611bca612fb1565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614b71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614a71565b60405180910390fd5b60008663ffffffff1611611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614ad1565b60405180910390fd5b60008463ffffffff161480611d1a5750603c8585611d119190614fdc565b63ffffffff1610155b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614ab1565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550611ed78a6127ee565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f8f91906146e0565b60405180910390a45050505050505050505050565b606b5481565b611fb261290d565b73ffffffffffffffffffffffffffffffffffffffff16611fd0611a39565b73ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614b31565b60405180910390fd5b80606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806069546000856040516020016120d5939291906146a7565b60405160208183030381529060405280519060200120905080606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16606b54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308860405160200161216297969594939291906145da565b6040516020818303038152906040528051906020012091505092915050565b61218961290d565b73ffffffffffffffffffffffffffffffffffffffff166121a7611a39565b73ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614b31565b60405180910390fd5b80606b8190555050565b606a60089054906101000a900463ffffffff1681565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606c6020528060005260406000206000915090505481565b61226361290d565b73ffffffffffffffffffffffffffffffffffffffff16612281611a39565b73ffffffffffffffffffffffffffffffffffffffff16146122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce90614b31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123f4578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161236491906148f7565b60206040518083038186803b15801561237c57600080fd5b505afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b49190613679565b6123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614b91565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161248691906146e0565b60405180910390a150565b6000606a60089054906101000a900463ffffffff16905060008163ffffffff16116124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e890614af1565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906149d1565b60405180910390fd5b6000801b8114156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614c11565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401612615919061481b565b60206040518083038186803b15801561262d57600080fd5b505afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906136cb565b146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614bf1565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401612702919061481b565b60206040518083038186803b15801561271a57600080fd5b505afa15801561272e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127529190613ae2565b9050428363ffffffff168263ffffffff1661276d9190614e90565b106127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a4906149f1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008681526020019081526020016000208190555050505050565b6127f661290d565b73ffffffffffffffffffffffffffffffffffffffff16612814611a39565b73ffffffffffffffffffffffffffffffffffffffff161461286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190614b31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d190614991565b60405180910390fd5b6128e381612eeb565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484b93c460695485606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16600088606b546040518863ffffffff1660e01b81526004016129b79796959493929190614ccc565b602060405180830381600087803b1580156129d157600080fd5b505af11580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0991906136cb565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4357606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b109b9a99989796959493929190614747565b600060405180830381600087803b158015612b2a57600080fd5b505af1158015612b3e573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612ba494939291906146fb565b602060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf69190613679565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cfe57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612ccb929190614897565b600060405180830381600087803b158015612ce557600080fd5b505af1158015612cf9573d6000803e3d6000fd5b505050505b949350505050565b60606000604067ffffffffffffffff811115612d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612d7d5781602001600182028036833780820191505090505b50905060005b6020811015612ee1576000600882612d9b9190614f4e565b85901b60f81c90506000601082612db29190614f1d565b90506000601083612dc391906152a1565b9050612dce8261309a565b85856002612ddc9190614f4e565b81518110612e13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612e4b8161309a565b856001866002612e5b9190614f4e565b612e659190614e90565b81518110612e9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080612ed9906151fa565b915050612d83565b5080915050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612fd7575060008054906101000a900460ff16155b613016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300d90614a91565b60405180910390fd5b60008060019054906101000a900460ff161590508015613066576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61306e6130d7565b6130766131b0565b80156130975760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156130bf576030826130b59190614ee6565b60f81b90506130d2565b6057826130cc9190614ee6565b60f81b90505b919050565b600060019054906101000a900460ff16806130fd575060008054906101000a900460ff16155b61313c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313390614a91565b60405180910390fd5b60008060019054906101000a900460ff16159050801561318c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156131ad5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806131d6575060008054906101000a900460ff16155b613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c90614a91565b60405180910390fd5b60008060019054906101000a900460ff161590508015613265576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61327561327061290d565b612eeb565b80156132965760008060016101000a81548160ff0219169083151502179055505b50565b60006132ac6132a784614d8e565b614d5d565b905080838252602082019050828560208602820111156132cb57600080fd5b60005b858110156132fb57816132e188826133ea565b8452602084019350602083019250506001810190506132ce565b5050509392505050565b600061331861331384614dba565b614d5d565b90508281526020810184848401111561333057600080fd5b61333b8482856151b8565b509392505050565b600061335661335184614dea565b614d5d565b90508281526020810184848401111561336e57600080fd5b6133798482856151b8565b509392505050565b600081359050613390816153cd565b92915050565b6000815190506133a5816153e4565b92915050565b600082601f8301126133bc57600080fd5b81356133cc848260208601613299565b91505092915050565b6000815190506133e4816153fb565b92915050565b6000813590506133f981615412565b92915050565b60008151905061340e81615412565b92915050565b600082601f83011261342557600080fd5b8135613435848260208601613305565b91505092915050565b60008151905061344d81615429565b92915050565b60008135905061346281615440565b92915050565b600082601f83011261347957600080fd5b8135613489848260208601613343565b91505092915050565b6000813590506134a181615450565b92915050565b6000815190506134b681615450565b92915050565b6000813590506134cb81615467565b92915050565b6000815190506134e081615467565b92915050565b6000602082840312156134f857600080fd5b600061350684828501613381565b91505092915050565b6000806000806000806000806000806101408b8d03121561352f57600080fd5b600061353d8d828e01613396565b9a5050602061354e8d828e01613396565b995050604061355f8d828e01613396565b98505060606135708d828e0161343e565b97505060806135818d828e016134d1565b96505060a06135928d828e016134d1565b95505060c06135a38d828e016134d1565b94505060e06135b48d828e016134a7565b9350506101006135c68d828e016134a7565b9250506101206135d88d828e01613396565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561360257600080fd5b600061361088828901613381565b955050602061362188828901613492565b945050604086013567ffffffffffffffff81111561363e57600080fd5b61364a88828901613414565b935050606061365b88828901613453565b925050608061366c88828901613492565b9150509295509295909350565b60006020828403121561368b57600080fd5b6000613699848285016133d5565b91505092915050565b6000602082840312156136b457600080fd5b60006136c2848285016133ea565b91505092915050565b6000602082840312156136dd57600080fd5b60006136eb848285016133ff565b91505092915050565b6000806040838503121561370757600080fd5b6000613715858286016133ea565b9250506020613726858286016133ea565b9150509250929050565b60006020828403121561374257600080fd5b600082013567ffffffffffffffff81111561375c57600080fd5b61376884828501613414565b91505092915050565b6000806040838503121561378457600080fd5b600083013567ffffffffffffffff81111561379e57600080fd5b6137aa85828601613468565b925050602083013567ffffffffffffffff8111156137c757600080fd5b6137d3858286016133ab565b9150509250929050565b60008060008060008060c087890312156137f657600080fd5b600087013567ffffffffffffffff81111561381057600080fd5b61381c89828a01613468565b965050602087013567ffffffffffffffff81111561383957600080fd5b61384589828a016133ab565b955050604061385689828a01613381565b945050606061386789828a01613492565b935050608087013567ffffffffffffffff81111561388457600080fd5b61389089828a01613414565b92505060a06138a189828a01613453565b9150509295509295509295565b600080600080600080600060e0888a0312156138c957600080fd5b600088013567ffffffffffffffff8111156138e357600080fd5b6138ef8a828b01613468565b975050602088013567ffffffffffffffff81111561390c57600080fd5b6139188a828b016133ab565b96505060406139298a828b01613381565b955050606061393a8a828b01613492565b945050608088013567ffffffffffffffff81111561395757600080fd5b6139638a828b01613414565b93505060a06139748a828b01613453565b92505060c06139858a828b01613492565b91505092959891949750929550565b6000806000606084860312156139a957600080fd5b600084013567ffffffffffffffff8111156139c357600080fd5b6139cf86828701613468565b935050602084013567ffffffffffffffff8111156139ec57600080fd5b6139f8868287016133ab565b9250506040613a0986828701613492565b9150509250925092565b60008060408385031215613a2657600080fd5b600083013567ffffffffffffffff811115613a4057600080fd5b613a4c85828601613468565b9250506020613a5d85828601613492565b9150509250929050565b600060208284031215613a7957600080fd5b6000613a8784828501613492565b91505092915050565b600060208284031215613aa257600080fd5b6000613ab0848285016134a7565b91505092915050565b600060208284031215613acb57600080fd5b6000613ad9848285016134bc565b91505092915050565b600060208284031215613af457600080fd5b6000613b02848285016134d1565b91505092915050565b6000613b178383613beb565b60208301905092915050565b613b2c81615022565b82525050565b613b3b81615010565b82525050565b613b52613b4d82615010565b615243565b82525050565b6000613b6382614e2a565b613b6d8185614e58565b9350613b7883614e1a565b8060005b83811015613ba9578151613b908882613b0b565b9750613b9b83614e4b565b925050600181019050613b7c565b5085935050505092915050565b613bbf81615034565b82525050565b613bd6613bd182615040565b615255565b82525050565b613be581615098565b82525050565b613bf481615098565b82525050565b613c0b613c0682615098565b615269565b82525050565b613c22613c1d8261506c565b61525f565b82525050565b613c31816150a2565b82525050565b6000613c4282614e35565b613c4c8185614e63565b9350613c5c8185602086016151c7565b613c658161538e565b840191505092915050565b613c798161513a565b82525050565b613c90613c8b8261513a565b615243565b82525050565b613c9f8161515e565b82525050565b613cb6613cb18261515e565b615243565b82525050565b613cc581615182565b82525050565b613cd481615194565b82525050565b613ce3816151a6565b82525050565b6000613cf482614e40565b613cfe8185614e74565b9350613d0e8185602086016151c7565b613d178161538e565b840191505092915050565b6000613d2d82614e40565b613d378185614e85565b9350613d478185602086016151c7565b80840191505092915050565b6000613d60602583614e74565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dc6602683614e74565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e2c602083614e74565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000613e6c601f83614e74565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000613eac601a83614e74565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000613eec602383614e74565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f52601683614e74565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000613f92601283614e74565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000613fd2601e83614e74565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000614012602e83614e74565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000614078604483614e74565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614104601b83614e74565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000614144601983614e74565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000614184602583614e74565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141ea602083614e74565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061422a602883614e74565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614290601e83614e74565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b60006142d0602083614e74565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000614310602083614e74565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000614350601c83614e74565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000614390602083614e74565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b60006143d0602883614e74565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614436601d83614e74565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000614476601c83614e74565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b60006144b6601983614e74565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b60006144f6601b83614e74565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61453281615113565b82525050565b61454961454482615113565b615285565b82525050565b6145588161511d565b82525050565b61456f61456a8261511d565b61528f565b82525050565b60006145818284613b58565b915081905092915050565b60006145988287613bc5565b6001820191506145a88286613bc5565b6001820191506145b88285613bfa565b6020820191506145c88284613bfa565b60208201915081905095945050505050565b60006145e6828a613bfa565b6020820191506145f68289613b41565b601482019150614606828861455e565b6004820191506146168287614538565b6020820191506146268286613c7f565b6014820191506146368285613ca5565b6014820191506146468284614538565b60208201915081905098975050505050505050565b60006146678284613d22565b915081905092915050565b600061467e8286613d22565b915061468a8285613c11565b60038201915061469a8284613d22565b9150819050949350505050565b60006146b38286614538565b6020820191506146c3828561455e565b6004820191506146d38284613d22565b9150819050949350505050565b60006020820190506146f56000830184613b32565b92915050565b60006080820190506147106000830187613b32565b61471d6020830186614529565b818103604083015261472f8185613c37565b905061473e6060830184613cbc565b95945050505050565b60006101608201905061475d600083018e613b32565b61476a602083018d614529565b818103604083015261477c818c613c37565b905061478b606083018b613cbc565b614798608083018a613ccb565b6147a560a0830189613ccb565b6147b260c0830188613ccb565b6147bf60e0830187613b32565b6147cd610100830186613b23565b8181036101208301526147e08185613c37565b90506147f0610140830184613b32565b9c9b505050505050505050505050565b60006020820190506148156000830184613bb6565b92915050565b60006020820190506148306000830184613bdc565b92915050565b600060c08201905061484b6000830189613bdc565b6148586020830188613b32565b6148656040830187614529565b6148726060830186613bdc565b61487f6080830185613cbc565b61488c60a0830184614529565b979650505050505050565b60006040820190506148ac6000830185613bdc565b6148b96020830184613bb6565b9392505050565b60006060820190506148d56000830186613bdc565b6148e26020830185614529565b6148ef6040830184613c96565b949350505050565b600060208201905061490c6000830184613c28565b92915050565b6000602082019050818103600083015261492c8184613c37565b905092915050565b60006020820190506149496000830184613c70565b92915050565b600060208201905081810360008301526149698184613ce9565b905092915050565b6000602082019050818103600083015261498a81613d53565b9050919050565b600060208201905081810360008301526149aa81613db9565b9050919050565b600060208201905081810360008301526149ca81613e1f565b9050919050565b600060208201905081810360008301526149ea81613e5f565b9050919050565b60006020820190508181036000830152614a0a81613e9f565b9050919050565b60006020820190508181036000830152614a2a81613edf565b9050919050565b60006020820190508181036000830152614a4a81613f45565b9050919050565b60006020820190508181036000830152614a6a81613f85565b9050919050565b60006020820190508181036000830152614a8a81613fc5565b9050919050565b60006020820190508181036000830152614aaa81614005565b9050919050565b60006020820190508181036000830152614aca8161406b565b9050919050565b60006020820190508181036000830152614aea816140f7565b9050919050565b60006020820190508181036000830152614b0a81614137565b9050919050565b60006020820190508181036000830152614b2a81614177565b9050919050565b60006020820190508181036000830152614b4a816141dd565b9050919050565b60006020820190508181036000830152614b6a8161421d565b9050919050565b60006020820190508181036000830152614b8a81614283565b9050919050565b60006020820190508181036000830152614baa816142c3565b9050919050565b60006020820190508181036000830152614bca81614303565b9050919050565b60006020820190508181036000830152614bea81614343565b9050919050565b60006020820190508181036000830152614c0a81614383565b9050919050565b60006020820190508181036000830152614c2a816143c3565b9050919050565b60006020820190508181036000830152614c4a81614429565b9050919050565b60006020820190508181036000830152614c6a81614469565b9050919050565b60006020820190508181036000830152614c8a816144a9565b9050919050565b60006020820190508181036000830152614caa816144e9565b9050919050565b6000602082019050614cc66000830184614529565b92915050565b600060e082019050614ce1600083018a614529565b8181036020830152614cf38189613ce9565b9050614d026040830188613b32565b614d0f606083018761454f565b614d1c6080830186613cda565b614d2960a0830185614529565b614d3660c0830184614529565b98975050505050505050565b6000602082019050614d57600083018461454f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614d8457614d8361535f565b5b8060405250919050565b600067ffffffffffffffff821115614da957614da861535f565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614dd557614dd461535f565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e0557614e0461535f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614e9b82615113565b9150614ea683615113565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614edb57614eda6152d2565b5b828201905092915050565b6000614ef18261512d565b9150614efc8361512d565b92508260ff03821115614f1257614f116152d2565b5b828201905092915050565b6000614f288261512d565b9150614f338361512d565b925082614f4357614f42615301565b5b828204905092915050565b6000614f5982615113565b9150614f6483615113565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9d57614f9c6152d2565b5b828202905092915050565b6000614fb382615113565b9150614fbe83615113565b925082821015614fd157614fd06152d2565b5b828203905092915050565b6000614fe78261511d565b9150614ff28361511d565b925082821015615005576150046152d2565b5b828203905092915050565b600061501b826150f3565b9050919050565b600061502d826150f3565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006150d982615010565b9050919050565b60008190506150ee826153b9565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006151458261514c565b9050919050565b6000615157826150f3565b9050919050565b600061516982615170565b9050919050565b600061517b826150f3565b9050919050565b600061518d826150e0565b9050919050565b600061519f82615113565b9050919050565b60006151b18261511d565b9050919050565b82818337600083830152505050565b60005b838110156151e55780820151818401526020810190506151ca565b838111156151f4576000848401525b50505050565b600061520582615113565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615238576152376152d2565b5b600182019050919050565b600061524e82615273565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600061527e826153ac565b9050919050565b6000819050919050565b600061529a8261539f565b9050919050565b60006152ac8261512d565b91506152b78361512d565b9250826152c7576152c6615301565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b600281106153ca576153c9615330565b5b50565b6153d681615010565b81146153e157600080fd5b50565b6153ed81615022565b81146153f857600080fd5b50565b61540481615034565b811461540f57600080fd5b50565b61541b81615098565b811461542657600080fd5b50565b615432816150ce565b811461543d57600080fd5b50565b6002811061544d57600080fd5b50565b61545981615113565b811461546457600080fd5b50565b6154708161511d565b811461547b57600080fd5b5056fea2646970667358221220c3398c0ce1a63ebab7c7d774e29363fc2104e5baf50b56647fd2083b2e5ae4db64736f6c63430008000033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102535760003560e01c8063776d1a0111610146578063b5a73e75116100c3578063d4b8399211610087578063d4b839921461069a578063dc89a198146106b8578063e19a9dd9146106e8578063e319044b14610704578063f2fde38b14610720578063ff0394eb1461073c57610253565b8063b5a73e75146105f4578063c910638914610612578063cc3b43b114610630578063cd3ef95114610660578063d07acb5b1461067c57610253565b80638dcd26611161010a5780638dcd2661146105665780639a674ed114610582578063a4f9edbf1461059e578063aa7517e1146105ba578063b0eefabe146105d857610253565b8063776d1a01146104d25780637ceab3b1146104ee5780637dc0d1d01461050c57806388633b7b1461052a5780638da5cb5b1461054857610253565b806339eafa6f116101d45780635aef7de6116101985780635aef7de6146104545780635fc1188d146104725780636775ef691461048e5780636f2ddd93146104aa578063715018a6146104c857610253565b806339eafa6f1461038c5780633ea3c146146103bc578063425a2a3c146103d857806345c7980e146104085780634e1b83741461042457610253565b80631db61b541161021b5780631db61b54146102e857806321e314cb146103065780632351a877146103225780632b5000411461033e5780633408e4701461036e57610253565b8063086cfca8146102585780631138a87e1461027457806314604b8c1461029057806314f5a395146102ac5780631ba18b9b146102ca575b600080fd5b610272600480360381019061026d91906134e6565b61075a565b005b61028e60048036038101906102899190613994565b61089c565b005b6102aa60048036038101906102a591906138ae565b610b6d565b005b6102b4611235565b6040516102c19190614d42565b60405180910390f35b6102d261124b565b6040516102df9190614d42565b60405180910390f35b6102f0611261565b6040516102fd919061481b565b60405180910390f35b610320600480360381019061031b9190613ab9565b611288565b005b61033c600480360381019061033791906137dd565b6113a6565b005b610358600480360381019061035391906135ea565b6113be565b604051610365919061481b565b60405180910390f35b6103766113df565b6040516103839190614cb1565b60405180910390f35b6103a660048036038101906103a19190613771565b6113ec565b6040516103b3919061494f565b60405180910390f35b6103d660048036038101906103d191906136a2565b611454565b005b6103f260048036038101906103ed91906135ea565b61150e565b6040516103ff9190614912565b60405180910390f35b610422600480360381019061041d9190613771565b611609565b005b61043e600480360381019061043991906136f4565b611632565b60405161044b9190614800565b60405180910390f35b61045c611661565b60405161046991906146e0565b60405180910390f35b61048c60048036038101906104879190613a67565b611687565b005b6104a860048036038101906104a39190613ab9565b61170d565b005b6104b26117f6565b6040516104bf9190614cb1565b60405180910390f35b6104d06117fc565b005b6104ec60048036038101906104e791906134e6565b611884565b005b6104f66119c6565b60405161050391906146e0565b60405180910390f35b6105146119ec565b6040516105219190614934565b60405180910390f35b610532611a12565b60405161053f919061481b565b60405180910390f35b610550611a39565b60405161055d91906146e0565b60405180910390f35b610580600480360381019061057b9190613771565b611a63565b005b61059c60048036038101906105979190613ab9565b611a73565b005b6105b860048036038101906105b39190613730565b611b8b565b005b6105c2611fa4565b6040516105cf9190614cb1565b60405180910390f35b6105f260048036038101906105ed91906134e6565b611faa565b005b6105fc61206a565b60405161060991906146e0565b60405180910390f35b61061a612090565b60405161062791906146e0565b60405180910390f35b61064a60048036038101906106459190613a13565b6120ba565b604051610657919061481b565b60405180910390f35b61067a60048036038101906106759190613a67565b612181565b005b610684612207565b6040516106919190614d42565b60405180910390f35b6106a261221d565b6040516106af91906146e0565b60405180910390f35b6106d260048036038101906106cd91906136a2565b612243565b6040516106df919061481b565b60405180910390f35b61070260048036038101906106fd91906134e6565b61225b565b005b61071e600480360381019061071991906136a2565b612491565b005b61073a600480360381019061073591906134e6565b6127ee565b005b6107446128e6565b604051610751919061481b565b60405180910390f35b61076261290d565b73ffffffffffffffffffffffffffffffffffffffff16610780611a39565b73ffffffffffffffffffffffffffffffffffffffff16146107d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cd90614b31565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006108a884846113ec565b90506000818051906020012090506000831115610a52576000606c60008381526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490614b51565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b81526004016109bc919061481b565b60206040518083038186803b1580156109d457600080fd5b505afa1580156109e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0c91906136cb565b14610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390614b11565b60405180910390fd5b50610aab565b6000801b606c60008381526020019081526020016000205414610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190614a11565b60405180910390fd5b5b6000610ab783856120ba565b905080606c6000848152602001908152602001600020819055506000610add8486612915565b9050808214610b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1890614a31565b60405180910390fd5b86604051610b2f919061465b565b6040518091039020817fa1f5047031a658827550a2c4be07648493f3ac88a09c857b3961d1336429a31f60405160405180910390a350505050505050565b6000610b7988886113ec565b8051906020012090506000606c60008381526020019081526020016000205490506000801b811415610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790614c11565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d90614c31565b60405180910390fd5b6000610c5588888888886113be565b905080898581518110610c91577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015114610cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd090614c91565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e846040518263ffffffff1660e01b8152600401610d39919061481b565b60206040518083038186803b158015610d5157600080fd5b505afa158015610d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8991906136cb565b14610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090614c51565b60405180910390fd5b6000606b5490506000811480610e895750606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166326d6c97b846040518263ffffffff1660e01b8152600401610e35919061481b565b60206040518083038186803b158015610e4d57600080fd5b505afa158015610e61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e859190613a90565b8111155b610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906149b1565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e856040518263ffffffff1660e01b8152600401610f25919061481b565b60206040518083038186803b158015610f3d57600080fd5b505afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f759190613ae2565b905042606a60049054906101000a900463ffffffff1663ffffffff168263ffffffff16610fa29190614e90565b10610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990614bd1565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806110255750428163ffffffff168363ffffffff166110229190614e90565b10155b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90614a51565b60405180910390fd5b60008714806110ed5750606d600087815260200190815260200160002060008d60018a6110919190614fa8565b815181106110c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b61112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390614971565b60405180910390fd5b606d6000878152602001908152602001600020600085815260200190815260200160002060009054906101000a900460ff161561119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590614bb1565b60405180910390fd5b6001606d6000888152602001908152602001600020600086815260200190815260200160002060006101000a81548160ff0219169083151502179055506111e78b8b8b8b612a11565b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90614c71565b60405180910390fd5b50505050505050505050505050565b606a60049054906101000a900463ffffffff1681565b606a60009054906101000a900463ffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b61129061290d565b73ffffffffffffffffffffffffffffffffffffffff166112ae611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90614b31565b60405180910390fd5b6000606a60089054906101000a900463ffffffff16905060008163ffffffff1614806113425750603c82826113399190614fdc565b63ffffffff1610155b611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890614ab1565b60405180910390fd5b81606a60046101000a81548163ffffffff021916908363ffffffff1602179055505050565b6113b68686868686866000610b6d565b505050505050565b60006113cd868686868661150e565b80519060200120905095945050505050565b6000804690508091505090565b6060600061141f836040516020016114049190614575565b60405160208183030381529060405280519060200120612d06565b90508362e2909f60e81b8260405160200161143c93929190614672565b60405160208183030381529060405291505092915050565b61145c61290d565b73ffffffffffffffffffffffffffffffffffffffff1661147a611a39565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790614b31565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6060600061151a6113df565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001611556939291906148c0565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b8989898051906020012089896040516020016115b596959493929190614836565b604051602081830303815290604052805190602001209050601960f81b600160f81b83836040516020016115ec949392919061458c565b604051602081830303815290604052935050505095945050505050565b600061161583836113ec565b905060008180519060200120905061162c81611454565b50505050565b606d6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61168f61290d565b73ffffffffffffffffffffffffffffffffffffffff166116ad611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90614b31565b60405180910390fd5b8060698190555050565b61171561290d565b73ffffffffffffffffffffffffffffffffffffffff16611733611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178090614b31565b60405180910390fd5b60008163ffffffff16116117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c990614ad1565b60405180910390fd5b80606a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b60695481565b61180461290d565b73ffffffffffffffffffffffffffffffffffffffff16611822611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186f90614b31565b60405180910390fd5b6118826000612eeb565b565b61188c61290d565b73ffffffffffffffffffffffffffffffffffffffff166118aa611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614b31565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a6f8282600061089c565b5050565b611a7b61290d565b73ffffffffffffffffffffffffffffffffffffffff16611a99611a39565b73ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614b31565b60405180910390fd5b60008163ffffffff161480611b285750603c606a60049054906101000a900463ffffffff1682611b1f9190614fdc565b63ffffffff1610155b611b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5e90614ab1565b60405180910390fd5b80606a60086101000a81548163ffffffff021916908363ffffffff16021790555050565b6000806000806000806000806000808a806020019051810190611bae919061350f565b9950995099509950995099509950995099509950611bca612fb1565b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3190614b71565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca190614a71565b60405180910390fd5b60008663ffffffff1611611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea90614ad1565b60405180910390fd5b60008463ffffffff161480611d1a5750603c8585611d119190614fdc565b63ffffffff1610155b611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090614ab1565b60405180910390fd5b88606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555087606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555086606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606a60086101000a81548163ffffffff021916908363ffffffff16021790555085606a60006101000a81548163ffffffff021916908363ffffffff16021790555084606a60046101000a81548163ffffffff021916908363ffffffff16021790555080606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606b8190555081606981905550611ed78a6127ee565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8b8abdce7435e63696dbae9e46dc2ee5036195638ecfc5b45a3c45bcd7e3ed34606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f8f91906146e0565b60405180910390a45050505050505050505050565b606b5481565b611fb261290d565b73ffffffffffffffffffffffffffffffffffffffff16611fd0611a39565b73ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d90614b31565b60405180910390fd5b80606a600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806069546000856040516020016120d5939291906146a7565b60405160208183030381529060405280519060200120905080606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16606b54606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308860405160200161216297969594939291906145da565b6040516020818303038152906040528051906020012091505092915050565b61218961290d565b73ffffffffffffffffffffffffffffffffffffffff166121a7611a39565b73ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614b31565b60405180910390fd5b80606b8190555050565b606a60089054906101000a900463ffffffff1681565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606c6020528060005260406000206000915090505481565b61226361290d565b73ffffffffffffffffffffffffffffffffffffffff16612281611a39565b73ffffffffffffffffffffffffffffffffffffffff16146122d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ce90614b31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146123f4578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161236491906148f7565b60206040518083038186803b15801561237c57600080fd5b505afa158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b49190613679565b6123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90614b91565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161248691906146e0565b60405180910390a150565b6000606a60089054906101000a900463ffffffff16905060008163ffffffff16116124f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e890614af1565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81141561256f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612566906149d1565b60405180910390fd5b6000801b8114156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90614c11565b60405180910390fd5b600160001b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d09cc57e836040518263ffffffff1660e01b8152600401612615919061481b565b60206040518083038186803b15801561262d57600080fd5b505afa158015612641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266591906136cb565b146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614bf1565b60405180910390fd5b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acae8f4e836040518263ffffffff1660e01b8152600401612702919061481b565b60206040518083038186803b15801561271a57600080fd5b505afa15801561272e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127529190613ae2565b9050428363ffffffff168263ffffffff1661276d9190614e90565b106127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a4906149f1565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008681526020019081526020016000208190555050505050565b6127f661290d565b73ffffffffffffffffffffffffffffffffffffffff16612814611a39565b73ffffffffffffffffffffffffffffffffffffffff161461286a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286190614b31565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d190614991565b60405180910390fd5b6128e381612eeb565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484b93c460695485606a600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606a60009054906101000a900463ffffffff16600088606b546040518863ffffffff1660e01b81526004016129b79796959493929190614ccc565b602060405180830381600087803b1580156129d157600080fd5b505af11580156129e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0991906136cb565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4357606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b109b9a99989796959493929190614747565b600060405180830381600087803b158015612b2a57600080fd5b505af1158015612b3e573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612ba494939291906146fb565b602060405180830381600087803b158015612bbe57600080fd5b505af1158015612bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf69190613679565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cfe57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612ccb929190614897565b600060405180830381600087803b158015612ce557600080fd5b505af1158015612cf9573d6000803e3d6000fd5b505050505b949350505050565b60606000604067ffffffffffffffff811115612d4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612d7d5781602001600182028036833780820191505090505b50905060005b6020811015612ee1576000600882612d9b9190614f4e565b85901b60f81c90506000601082612db29190614f1d565b90506000601083612dc391906152a1565b9050612dce8261309a565b85856002612ddc9190614f4e565b81518110612e13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612e4b8161309a565b856001866002612e5b9190614f4e565b612e659190614e90565b81518110612e9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505050508080612ed9906151fa565b915050612d83565b5080915050919050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612fd7575060008054906101000a900460ff16155b613016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300d90614a91565b60405180910390fd5b60008060019054906101000a900460ff161590508015613066576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61306e6130d7565b6130766131b0565b80156130975760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156130bf576030826130b59190614ee6565b60f81b90506130d2565b6057826130cc9190614ee6565b60f81b90505b919050565b600060019054906101000a900460ff16806130fd575060008054906101000a900460ff16155b61313c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313390614a91565b60405180910390fd5b60008060019054906101000a900460ff16159050801561318c576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156131ad5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806131d6575060008054906101000a900460ff16155b613215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320c90614a91565b60405180910390fd5b60008060019054906101000a900460ff161590508015613265576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61327561327061290d565b612eeb565b80156132965760008060016101000a81548160ff0219169083151502179055505b50565b60006132ac6132a784614d8e565b614d5d565b905080838252602082019050828560208602820111156132cb57600080fd5b60005b858110156132fb57816132e188826133ea565b8452602084019350602083019250506001810190506132ce565b5050509392505050565b600061331861331384614dba565b614d5d565b90508281526020810184848401111561333057600080fd5b61333b8482856151b8565b509392505050565b600061335661335184614dea565b614d5d565b90508281526020810184848401111561336e57600080fd5b6133798482856151b8565b509392505050565b600081359050613390816153cd565b92915050565b6000815190506133a5816153e4565b92915050565b600082601f8301126133bc57600080fd5b81356133cc848260208601613299565b91505092915050565b6000815190506133e4816153fb565b92915050565b6000813590506133f981615412565b92915050565b60008151905061340e81615412565b92915050565b600082601f83011261342557600080fd5b8135613435848260208601613305565b91505092915050565b60008151905061344d81615429565b92915050565b60008135905061346281615440565b92915050565b600082601f83011261347957600080fd5b8135613489848260208601613343565b91505092915050565b6000813590506134a181615450565b92915050565b6000815190506134b681615450565b92915050565b6000813590506134cb81615467565b92915050565b6000815190506134e081615467565b92915050565b6000602082840312156134f857600080fd5b600061350684828501613381565b91505092915050565b6000806000806000806000806000806101408b8d03121561352f57600080fd5b600061353d8d828e01613396565b9a5050602061354e8d828e01613396565b995050604061355f8d828e01613396565b98505060606135708d828e0161343e565b97505060806135818d828e016134d1565b96505060a06135928d828e016134d1565b95505060c06135a38d828e016134d1565b94505060e06135b48d828e016134a7565b9350506101006135c68d828e016134a7565b9250506101206135d88d828e01613396565b9150509295989b9194979a5092959850565b600080600080600060a0868803121561360257600080fd5b600061361088828901613381565b955050602061362188828901613492565b945050604086013567ffffffffffffffff81111561363e57600080fd5b61364a88828901613414565b935050606061365b88828901613453565b925050608061366c88828901613492565b9150509295509295909350565b60006020828403121561368b57600080fd5b6000613699848285016133d5565b91505092915050565b6000602082840312156136b457600080fd5b60006136c2848285016133ea565b91505092915050565b6000602082840312156136dd57600080fd5b60006136eb848285016133ff565b91505092915050565b6000806040838503121561370757600080fd5b6000613715858286016133ea565b9250506020613726858286016133ea565b9150509250929050565b60006020828403121561374257600080fd5b600082013567ffffffffffffffff81111561375c57600080fd5b61376884828501613414565b91505092915050565b6000806040838503121561378457600080fd5b600083013567ffffffffffffffff81111561379e57600080fd5b6137aa85828601613468565b925050602083013567ffffffffffffffff8111156137c757600080fd5b6137d3858286016133ab565b9150509250929050565b60008060008060008060c087890312156137f657600080fd5b600087013567ffffffffffffffff81111561381057600080fd5b61381c89828a01613468565b965050602087013567ffffffffffffffff81111561383957600080fd5b61384589828a016133ab565b955050604061385689828a01613381565b945050606061386789828a01613492565b935050608087013567ffffffffffffffff81111561388457600080fd5b61389089828a01613414565b92505060a06138a189828a01613453565b9150509295509295509295565b600080600080600080600060e0888a0312156138c957600080fd5b600088013567ffffffffffffffff8111156138e357600080fd5b6138ef8a828b01613468565b975050602088013567ffffffffffffffff81111561390c57600080fd5b6139188a828b016133ab565b96505060406139298a828b01613381565b955050606061393a8a828b01613492565b945050608088013567ffffffffffffffff81111561395757600080fd5b6139638a828b01613414565b93505060a06139748a828b01613453565b92505060c06139858a828b01613492565b91505092959891949750929550565b6000806000606084860312156139a957600080fd5b600084013567ffffffffffffffff8111156139c357600080fd5b6139cf86828701613468565b935050602084013567ffffffffffffffff8111156139ec57600080fd5b6139f8868287016133ab565b9250506040613a0986828701613492565b9150509250925092565b60008060408385031215613a2657600080fd5b600083013567ffffffffffffffff811115613a4057600080fd5b613a4c85828601613468565b9250506020613a5d85828601613492565b9150509250929050565b600060208284031215613a7957600080fd5b6000613a8784828501613492565b91505092915050565b600060208284031215613aa257600080fd5b6000613ab0848285016134a7565b91505092915050565b600060208284031215613acb57600080fd5b6000613ad9848285016134bc565b91505092915050565b600060208284031215613af457600080fd5b6000613b02848285016134d1565b91505092915050565b6000613b178383613beb565b60208301905092915050565b613b2c81615022565b82525050565b613b3b81615010565b82525050565b613b52613b4d82615010565b615243565b82525050565b6000613b6382614e2a565b613b6d8185614e58565b9350613b7883614e1a565b8060005b83811015613ba9578151613b908882613b0b565b9750613b9b83614e4b565b925050600181019050613b7c565b5085935050505092915050565b613bbf81615034565b82525050565b613bd6613bd182615040565b615255565b82525050565b613be581615098565b82525050565b613bf481615098565b82525050565b613c0b613c0682615098565b615269565b82525050565b613c22613c1d8261506c565b61525f565b82525050565b613c31816150a2565b82525050565b6000613c4282614e35565b613c4c8185614e63565b9350613c5c8185602086016151c7565b613c658161538e565b840191505092915050565b613c798161513a565b82525050565b613c90613c8b8261513a565b615243565b82525050565b613c9f8161515e565b82525050565b613cb6613cb18261515e565b615243565b82525050565b613cc581615182565b82525050565b613cd481615194565b82525050565b613ce3816151a6565b82525050565b6000613cf482614e40565b613cfe8185614e74565b9350613d0e8185602086016151c7565b613d178161538e565b840191505092915050565b6000613d2d82614e40565b613d378185614e85565b9350613d478185602086016151c7565b80840191505092915050565b6000613d60602583614e74565b91507f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008301527f64207965740000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613dc6602683614e74565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e2c602083614e74565b91507f426f6e64206f6e207175657374696f6e206e6f74206869676820656e6f7567686000830152602082019050919050565b6000613e6c601f83614e74565b91507f50726f706f73616c20697320616c726561647920696e76616c696461746564006000830152602082019050919050565b6000613eac601a83614e74565b91507f416e7377657220686173206e6f742065787069726564207965740000000000006000830152602082019050919050565b6000613eec602383614e74565b91507f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008301527f74656400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f52601683614e74565b91507f556e6578706563746564207175657374696f6e206964000000000000000000006000830152602082019050919050565b6000613f92601283614e74565b91507f416e7377657220686173206578706972656400000000000000000000000000006000830152602082019050919050565b6000613fd2601e83614e74565b91507f5461726765742063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b6000614012602e83614e74565b91507f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008301527f647920696e697469616c697a65640000000000000000000000000000000000006020830152604082019050919050565b6000614078604483614e74565b91507f5468657265206e65656420746f206265206174206c656173742036307320626560008301527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208301527f74696f6e000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6000614104601b83614e74565b91507f54696d656f75742068617320746f2062652067726561746572203000000000006000830152602082019050919050565b6000614144601983614e74565b91507f416e7377657273206172652076616c696420666f7265766572000000000000006000830152602082019050919050565b6000614184602583614e74565b91507f50726576696f75732070726f706f73616c20776173206e6f7420696e76616c6960008301527f64617465640000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141ea602083614e74565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061422a602883614e74565b91507f546869732070726f706f73616c20686173206265656e206d61726b656420617360008301527f20696e76616c69640000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614290601e83614e74565b91507f4176617461722063616e206e6f74206265207a65726f206164647265737300006000830152602082019050919050565b60006142d0602083614e74565b91507f477561726420646f6573206e6f7420696d706c656d656e7420494552433136356000830152602082019050919050565b6000614310602083614e74565b91507f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e6000830152602082019050919050565b6000614350601c83614e74565b91507f5761697420666f72206164646974696f6e616c20636f6f6c646f776e000000006000830152602082019050919050565b6000614390602083614e74565b91507f4f6e6c7920706f73697469766520616e73776572732063616e206578706972656000830152602082019050919050565b60006143d0602883614e74565b91507f4e6f207175657374696f6e2069642073657420666f722070726f76696465642060008301527f70726f706f73616c0000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614436601d83614e74565b91507f50726f706f73616c20686173206265656e20696e76616c6964617465640000006000830152602082019050919050565b6000614476601c83614e74565b91507f5472616e73616374696f6e20776173206e6f7420617070726f766564000000006000830152602082019050919050565b60006144b6601983614e74565b91507f4d6f64756c65207472616e73616374696f6e206661696c6564000000000000006000830152602082019050919050565b60006144f6601b83614e74565b91507f556e6578706563746564207472616e73616374696f6e206861736800000000006000830152602082019050919050565b61453281615113565b82525050565b61454961454482615113565b615285565b82525050565b6145588161511d565b82525050565b61456f61456a8261511d565b61528f565b82525050565b60006145818284613b58565b915081905092915050565b60006145988287613bc5565b6001820191506145a88286613bc5565b6001820191506145b88285613bfa565b6020820191506145c88284613bfa565b60208201915081905095945050505050565b60006145e6828a613bfa565b6020820191506145f68289613b41565b601482019150614606828861455e565b6004820191506146168287614538565b6020820191506146268286613c7f565b6014820191506146368285613ca5565b6014820191506146468284614538565b60208201915081905098975050505050505050565b60006146678284613d22565b915081905092915050565b600061467e8286613d22565b915061468a8285613c11565b60038201915061469a8284613d22565b9150819050949350505050565b60006146b38286614538565b6020820191506146c3828561455e565b6004820191506146d38284613d22565b9150819050949350505050565b60006020820190506146f56000830184613b32565b92915050565b60006080820190506147106000830187613b32565b61471d6020830186614529565b818103604083015261472f8185613c37565b905061473e6060830184613cbc565b95945050505050565b60006101608201905061475d600083018e613b32565b61476a602083018d614529565b818103604083015261477c818c613c37565b905061478b606083018b613cbc565b614798608083018a613ccb565b6147a560a0830189613ccb565b6147b260c0830188613ccb565b6147bf60e0830187613b32565b6147cd610100830186613b23565b8181036101208301526147e08185613c37565b90506147f0610140830184613b32565b9c9b505050505050505050505050565b60006020820190506148156000830184613bb6565b92915050565b60006020820190506148306000830184613bdc565b92915050565b600060c08201905061484b6000830189613bdc565b6148586020830188613b32565b6148656040830187614529565b6148726060830186613bdc565b61487f6080830185613cbc565b61488c60a0830184614529565b979650505050505050565b60006040820190506148ac6000830185613bdc565b6148b96020830184613bb6565b9392505050565b60006060820190506148d56000830186613bdc565b6148e26020830185614529565b6148ef6040830184613c96565b949350505050565b600060208201905061490c6000830184613c28565b92915050565b6000602082019050818103600083015261492c8184613c37565b905092915050565b60006020820190506149496000830184613c70565b92915050565b600060208201905081810360008301526149698184613ce9565b905092915050565b6000602082019050818103600083015261498a81613d53565b9050919050565b600060208201905081810360008301526149aa81613db9565b9050919050565b600060208201905081810360008301526149ca81613e1f565b9050919050565b600060208201905081810360008301526149ea81613e5f565b9050919050565b60006020820190508181036000830152614a0a81613e9f565b9050919050565b60006020820190508181036000830152614a2a81613edf565b9050919050565b60006020820190508181036000830152614a4a81613f45565b9050919050565b60006020820190508181036000830152614a6a81613f85565b9050919050565b60006020820190508181036000830152614a8a81613fc5565b9050919050565b60006020820190508181036000830152614aaa81614005565b9050919050565b60006020820190508181036000830152614aca8161406b565b9050919050565b60006020820190508181036000830152614aea816140f7565b9050919050565b60006020820190508181036000830152614b0a81614137565b9050919050565b60006020820190508181036000830152614b2a81614177565b9050919050565b60006020820190508181036000830152614b4a816141dd565b9050919050565b60006020820190508181036000830152614b6a8161421d565b9050919050565b60006020820190508181036000830152614b8a81614283565b9050919050565b60006020820190508181036000830152614baa816142c3565b9050919050565b60006020820190508181036000830152614bca81614303565b9050919050565b60006020820190508181036000830152614bea81614343565b9050919050565b60006020820190508181036000830152614c0a81614383565b9050919050565b60006020820190508181036000830152614c2a816143c3565b9050919050565b60006020820190508181036000830152614c4a81614429565b9050919050565b60006020820190508181036000830152614c6a81614469565b9050919050565b60006020820190508181036000830152614c8a816144a9565b9050919050565b60006020820190508181036000830152614caa816144e9565b9050919050565b6000602082019050614cc66000830184614529565b92915050565b600060e082019050614ce1600083018a614529565b8181036020830152614cf38189613ce9565b9050614d026040830188613b32565b614d0f606083018761454f565b614d1c6080830186613cda565b614d2960a0830185614529565b614d3660c0830184614529565b98975050505050505050565b6000602082019050614d57600083018461454f565b92915050565b6000604051905081810181811067ffffffffffffffff82111715614d8457614d8361535f565b5b8060405250919050565b600067ffffffffffffffff821115614da957614da861535f565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614dd557614dd461535f565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115614e0557614e0461535f565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614e9b82615113565b9150614ea683615113565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614edb57614eda6152d2565b5b828201905092915050565b6000614ef18261512d565b9150614efc8361512d565b92508260ff03821115614f1257614f116152d2565b5b828201905092915050565b6000614f288261512d565b9150614f338361512d565b925082614f4357614f42615301565b5b828204905092915050565b6000614f5982615113565b9150614f6483615113565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f9d57614f9c6152d2565b5b828202905092915050565b6000614fb382615113565b9150614fbe83615113565b925082821015614fd157614fd06152d2565b5b828203905092915050565b6000614fe78261511d565b9150614ff28361511d565b925082821015615005576150046152d2565b5b828203905092915050565b600061501b826150f3565b9050919050565b600061502d826150f3565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006150d982615010565b9050919050565b60008190506150ee826153b9565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006151458261514c565b9050919050565b6000615157826150f3565b9050919050565b600061516982615170565b9050919050565b600061517b826150f3565b9050919050565b600061518d826150e0565b9050919050565b600061519f82615113565b9050919050565b60006151b18261511d565b9050919050565b82818337600083830152505050565b60005b838110156151e55780820151818401526020810190506151ca565b838111156151f4576000848401525b50505050565b600061520582615113565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615238576152376152d2565b5b600182019050919050565b600061524e82615273565b9050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600061527e826153ac565b9050919050565b6000819050919050565b600061529a8261539f565b9050919050565b60006152ac8261512d565b91506152b78361512d565b9250826152c7576152c6615301565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01b9050919050565b60008160601b9050919050565b600281106153ca576153c9615330565b5b50565b6153d681615010565b81146153e157600080fd5b50565b6153ed81615022565b81146153f857600080fd5b50565b61540481615034565b811461540f57600080fd5b50565b61541b81615098565b811461542657600080fd5b50565b615432816150ce565b811461543d57600080fd5b50565b6002811061544d57600080fd5b50565b61545981615113565b811461546457600080fd5b50565b6154708161511d565b811461547b57600080fd5b5056fea2646970667358221220c3398c0ce1a63ebab7c7d774e29363fc2104e5baf50b56647fd2083b2e5ae4db64736f6c63430008000033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/contracts/RolesMod.json b/packages/app/src/contracts/RolesMod.json deleted file mode 100644 index 5962a631..00000000 --- a/packages/app/src/contracts/RolesMod.json +++ /dev/null @@ -1,1121 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Roles", - "sourceName": "contracts/Roles.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ArraysDifferentLength", - "type": "error" - }, - { - "inputs": [], - "name": "ModuleTransactionFailed", - "type": "error" - }, - { - "inputs": [], - "name": "NoMembership", - "type": "error" - }, - { - "inputs": [], - "name": "SetUpModulesAlreadyCalled", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint16[]", - "name": "roles", - "type": "uint16[]" - }, - { - "indexed": false, - "internalType": "bool[]", - "name": "memberOf", - "type": "bool[]" - } - ], - "name": "AssignRoles", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "DisabledModule", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "EnabledModule", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "RolesModSetup", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "defaultRole", - "type": "uint16" - } - ], - "name": "SetDefaultRole", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "multisendAddress", - "type": "address" - } - ], - "name": "SetMultisendAddress", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "enum ExecutionOptions", - "name": "options", - "type": "uint8" - } - ], - "name": "allowTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "internalType": "uint16[]", - "name": "_roles", - "type": "uint16[]" - }, - { - "internalType": "bool[]", - "name": "memberOf", - "type": "bool[]" - } - ], - "name": "assignRoles", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "defaultRoles", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "prevModule", - "type": "address" - }, - { - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "disableModule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - } - ], - "name": "enableModule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "execTransactionFromModule", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - } - ], - "name": "execTransactionFromModuleReturnData", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "bool", - "name": "shouldRevert", - "type": "bool" - } - ], - "name": "execTransactionWithRole", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "operation", - "type": "uint8" - }, - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "bool", - "name": "shouldRevert", - "type": "bool" - } - ], - "name": "execTransactionWithRoleReturnData", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "pageSize", - "type": "uint256" - } - ], - "name": "getModulesPaginated", - "outputs": [ - { - "internalType": "address[]", - "name": "array", - "type": "address[]" - }, - { - "internalType": "address", - "name": "next", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_module", - "type": "address" - } - ], - "name": "isModuleEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "multisend", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - } - ], - "name": "revokeTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "enum ExecutionOptions", - "name": "options", - "type": "uint8" - } - ], - "name": "scopeAllowFunction", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "bool[]", - "name": "isParamScoped", - "type": "bool[]" - }, - { - "internalType": "enum ParameterType[]", - "name": "paramType", - "type": "uint8[]" - }, - { - "internalType": "enum Comparison[]", - "name": "paramComp", - "type": "uint8[]" - }, - { - "internalType": "bytes[]", - "name": "compValue", - "type": "bytes[]" - }, - { - "internalType": "enum ExecutionOptions", - "name": "options", - "type": "uint8" - } - ], - "name": "scopeFunction", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "enum ExecutionOptions", - "name": "options", - "type": "uint8" - } - ], - "name": "scopeFunctionExecutionOptions", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "uint256", - "name": "paramIndex", - "type": "uint256" - }, - { - "internalType": "enum ParameterType", - "name": "paramType", - "type": "uint8" - }, - { - "internalType": "enum Comparison", - "name": "paramComp", - "type": "uint8" - }, - { - "internalType": "bytes", - "name": "compValue", - "type": "bytes" - } - ], - "name": "scopeParameter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "uint256", - "name": "paramIndex", - "type": "uint256" - }, - { - "internalType": "enum ParameterType", - "name": "paramType", - "type": "uint8" - }, - { - "internalType": "bytes[]", - "name": "compValues", - "type": "bytes[]" - } - ], - "name": "scopeParameterAsOneOf", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - } - ], - "name": "scopeRevokeFunction", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - } - ], - "name": "scopeTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "module", - "type": "address" - }, - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - } - ], - "name": "setDefaultRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_multisend", - "type": "address" - } - ], - "name": "setMultisend", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "role", - "type": "uint16" - }, - { - "internalType": "address", - "name": "targetAddress", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "functionSig", - "type": "bytes4" - }, - { - "internalType": "uint8", - "name": "paramIndex", - "type": "uint8" - } - ], - "name": "unscopeParameter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162006aa738038062006aa7833981810160405281019062000037919062000892565b6000838383604051602001620000509392919062000991565b604051602081830303815290604052905062000072816200007c60201b60201c565b5050505062000b8d565b60008060008380602001905181019062000097919062000836565b925092509250620000ad620001d460201b60201c565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014083620002d360201b60201c565b62000150620003e960201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d84604051620001c6919062000974565b60405180910390a450505050565b600060019054906101000a900460ff1680620001fb575060008054906101000a900460ff16155b6200023d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023490620009f0565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200028e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200029e6200053260201b60201c565b620002ae6200061160201b60201c565b8015620002d05760008060016101000a81548160ff0219169083151502179055505b50565b620002e36200071060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003096200071860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000362576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003599062000a12565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620003d5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003cc90620009ce565b60405180910390fd5b620003e6816200074260201b60201c565b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620004b0576040517ff736703400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff168062000559575060008054906101000a900460ff16155b6200059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200059290620009f0565b60405180910390fd5b60008060019054906101000a900460ff161590508015620005ec576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200060e5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000638575060008054906101000a900460ff16155b6200067a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067190620009f0565b60405180910390fd5b60008060019054906101000a900460ff161590508015620006cb576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620006eb620006df6200071060201b60201c565b6200074260201b60201c565b80156200070d5760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620008198162000b59565b92915050565b600081519050620008308162000b73565b92915050565b60008060006060848603121562000852576200085162000a8d565b5b600062000862868287016200081f565b935050602062000875868287016200081f565b925050604062000888868287016200081f565b9150509250925092565b600080600060608486031215620008ae57620008ad62000a8d565b5b6000620008be8682870162000808565b9350506020620008d18682870162000808565b9250506040620008e48682870162000808565b9150509250925092565b620008f98162000a45565b82525050565b60006200090e60268362000a34565b91506200091b8262000a92565b604082019050919050565b600062000935602e8362000a34565b9150620009428262000ae1565b604082019050919050565b60006200095c60208362000a34565b9150620009698262000b30565b602082019050919050565b60006020820190506200098b6000830184620008ee565b92915050565b6000606082019050620009a86000830186620008ee565b620009b76020830185620008ee565b620009c66040830184620008ee565b949350505050565b60006020820190508181036000830152620009e981620008ff565b9050919050565b6000602082019050818103600083015262000a0b8162000926565b9050919050565b6000602082019050818103600083015262000a2d816200094d565b9050919050565b600082825260208201905092915050565b600062000a528262000a6d565b9050919050565b600062000a668262000a6d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000b648162000a45565b811462000b7057600080fd5b50565b62000b7e8162000a59565b811462000b8a57600080fd5b50565b615f0a8062000b9d6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063610b59251161011a578063a4f9edbf116100ad578063cc2f84521161007c578063cc2f8452146105a9578063d4b83992146105da578063e009cfde146105f8578063e19a9dd914610614578063f2fde38b1461063057610206565b8063a4f9edbf14610522578063a6edf38f1461053e578063b0c199121461055a578063c91063891461058b57610206565b80637ceab3b1116100e95780637ceab3b1146104ae5780638b95eccd146104cc5780638da5cb5b146104e8578063939337721461050657610206565b8063610b59251461043c5780636928e74b14610458578063715018a614610488578063776d1a011461049257610206565b80632e506a481161019d578063468721a71161016c578063468721a71461038557806351fa1d73146103b55780635229073f146103d15780635aef7de6146104025780635e8266951461042057610206565b80632e506a48146103155780632fcf52d11461033157806333a0480c1461034d5780633c1952b81461036957610206565b80632933ef1c116101d95780632933ef1c1461027b578063294402cc146102975780632d3c2547146102b55780632d9ad53d146102e557610206565b8063086cfca81461020b5780630de729c714610227578063102b7fe61461024357806315b77d3f1461025f575b600080fd5b61022560048036038101906102209190613f5e565b61064c565b005b610241600480360381019061023c919061479c565b61078e565b005b61025d600480360381019061025891906140b3565b610896565b005b6102796004803603810190610274919061455d565b6109a9565b005b610295600480360381019061029091906143d6565b610ab4565b005b61029f610bbc565b6040516102ac9190614f16565b60405180910390f35b6102cf60048036038101906102ca9190613f5e565b610be2565b6040516102dc91906155e6565b60405180910390f35b6102ff60048036038101906102fa9190613f5e565b610c03565b60405161030c91906150d8565b60405180910390f35b61032f600480360381019061032a9190614735565b610cd5565b005b61034b6004803603810190610346919061455d565b610de0565b005b61036760048036038101906103629190614429565b610eeb565b005b610383600480360381019061037e9190614673565b61100b565b005b61039f600480360381019061039a9190614133565b611122565b6040516103ac91906150d8565b60405180910390f35b6103cf60048036038101906103ca9190614396565b611349565b005b6103eb60048036038101906103e69190614133565b61144e565b6040516103f99291906150f3565b60405180910390f35b61040a61167b565b6040516104179190614f16565b60405180910390f35b61043a60048036038101906104359190614396565b6116a1565b005b61045660048036038101906104519190613f5e565b6117a6565b005b610472600480360381019061046d91906141bb565b611b30565b60405161047f91906150d8565b60405180910390f35b610490611d4e565b005b6104ac60048036038101906104a79190613f5e565b611dd6565b005b6104b6611f18565b6040516104c39190614f16565b60405180910390f35b6104e660048036038101906104e19190613f5e565b611f3e565b005b6104f0612057565b6040516104fd9190614f16565b60405180910390f35b610520600480360381019061051b91906145c4565b612081565b005b61053c60048036038101906105379190614320565b612195565b005b6105586004803603810190610553919061401e565b6122d1565b005b610574600480360381019061056f91906141bb565b6124d8565b6040516105829291906150f3565b60405180910390f35b610593612700565b6040516105a09190614f16565b60405180910390f35b6105c360048036038101906105be91906140f3565b61272a565b6040516105d19291906150a8565b60405180910390f35b6105e261292b565b6040516105ef9190614f16565b60405180910390f35b610612600480360381019061060d9190613fde565b612951565b005b61062e60048036038101906106299190613f5e565b612cda565b005b61064a60048036038101906106459190613f5e565b612f10565b005b610654613008565b73ffffffffffffffffffffffffffffffffffffffff16610672612057565b73ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf906151c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b610796613008565b73ffffffffffffffffffffffffffffffffffffffff166107b4612057565b73ffffffffffffffffffffffffffffffffffffffff161461080a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610801906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63a2f6f6d0606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b815260040161086194939291906155a1565b60006040518083038186803b15801561087957600080fd5b505af415801561088d573d6000803e3d6000fd5b50505050505050565b61089e613008565b73ffffffffffffffffffffffffffffffffffffffff166108bc612057565b73ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610909906151c7565b60405180910390fd5b80606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055507f197e61bb67ba4b0f657afcb5d2dbed385d50b697c51090f466cdbcc4c30a21ce828260405161099d929190614f7a565b60405180910390a15050565b6109b1613008565b73ffffffffffffffffffffffffffffffffffffffff166109cf612057565b73ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63163592dd606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610a7e9594939291906153fc565b60006040518083038186803b158015610a9657600080fd5b505af4158015610aaa573d6000803e3d6000fd5b5050505050505050565b610abc613008565b73ffffffffffffffffffffffffffffffffffffffff16610ada612057565b73ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b27906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__6377cff804606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b8152600401610b879493929190615308565b60006040518083038186803b158015610b9f57600080fd5b505af4158015610bb3573d6000803e3d6000fd5b50505050505050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a6020528060005260406000206000915054906101000a900461ffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff1614158015610cce5750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b610cdd613008565b73ffffffffffffffffffffffffffffffffffffffff16610cfb612057565b73ffffffffffffffffffffffffffffffffffffffff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d48906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__633c5a24e2606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610daa95949392919061554e565b60006040518083038186803b158015610dc257600080fd5b505af4158015610dd6573d6000803e3d6000fd5b5050505050505050565b610de8613008565b73ffffffffffffffffffffffffffffffffffffffff16610e06612057565b73ffffffffffffffffffffffffffffffffffffffff1614610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e53906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__635ebbaa68606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610eb59594939291906153fc565b60006040518083038186803b158015610ecd57600080fd5b505af4158015610ee1573d6000803e3d6000fd5b5050505050505050565b610ef3613008565b73ffffffffffffffffffffffffffffffffffffffff16610f11612057565b73ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__632af6aecb606b60008e61ffff1661ffff1681526020019081526020016000208d8d8d8d8d8d8d8d8d8d8d6040518d63ffffffff1660e01b8152600401610fce9c9b9a9998979695949392919061534d565b60006040518083038186803b158015610fe657600080fd5b505af4158015610ffa573d6000803e3d6000fd5b505050505050505050505050505050565b611013613008565b73ffffffffffffffffffffffffffffffffffffffff16611031612057565b73ffffffffffffffffffffffffffffffffffffffff1614611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63edf909e3606b60008b61ffff1661ffff1681526020019081526020016000208a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b81526004016110e8999897969594939291906154c7565b60006040518083038186803b15801561110057600080fd5b505af4158015611114573d6000803e3d6000fd5b505050505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689898989896040518863ffffffff1660e01b81526004016112be9796959493929190615267565b60006040518083038186803b1580156112d657600080fd5b505af41580156112ea573d6000803e3d6000fd5b5050505061133e868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085613010565b905095945050505050565b611351613008565b73ffffffffffffffffffffffffffffffffffffffff1661136f612057565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63cfe4317a606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b815260040161141a939291906152d1565b60006040518083038186803b15801561143257600080fd5b505af4158015611446573d6000803e3d6000fd5b505050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a6040518863ffffffff1660e01b81526004016115ed9796959493929190615267565b60006040518083038186803b15801561160557600080fd5b505af4158015611619573d6000803e3d6000fd5b5050505061166d878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086613305565b915091509550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116a9613008565b73ffffffffffffffffffffffffffffffffffffffff166116c7612057565b73ffffffffffffffffffffffffffffffffffffffff161461171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63ee54ca53606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b8152600401611772939291906152d1565b60006040518083038186803b15801561178a57600080fd5b505af415801561179e573d6000803e3d6000fd5b505050505050565b6117ae613008565b73ffffffffffffffffffffffffffffffffffffffff166117cc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561188c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290615247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090615227565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051611b259190614f16565b60405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b60008661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8b8b8b8b6040518863ffffffff1660e01b8152600401611c7f9796959493929190615267565b60006040518083038186803b158015611c9757600080fd5b505af4158015611cab573d6000803e3d6000fd5b50505050611cff888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087613010565b9050818015611d0c575080155b15611d43576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b979650505050505050565b611d56613008565b73ffffffffffffffffffffffffffffffffffffffff16611d74612057565b73ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc1906151c7565b60405180910390fd5b611dd46000613609565b565b611dde613008565b73ffffffffffffffffffffffffffffffffffffffff16611dfc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e49906151c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f46613008565b73ffffffffffffffffffffffffffffffffffffffff16611f64612057565b73ffffffffffffffffffffffffffffffffffffffff1614611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb1906151c7565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5fe6aabf4e790843df43ae0e22b58620066fb389295bedc06a92df6c3b28777d606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161204c9190614f16565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612089613008565b73ffffffffffffffffffffffffffffffffffffffff166120a7612057565b73ffffffffffffffffffffffffffffffffffffffff16146120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63512ce0f2606b60008a61ffff1661ffff168152602001908152602001600020898989898989896040518963ffffffff1660e01b815260040161215c98979695949392919061544f565b60006040518083038186803b15801561217457600080fd5b505af4158015612188573d6000803e3d6000fd5b5050505050505050505050565b6000806000838060200190518101906121ae9190613f8b565b9250925092506121bc6136cf565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061224783612f10565b61224f6137b8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d846040516122c39190614f16565b60405180910390a450505050565b6122d9613008565b73ffffffffffffffffffffffffffffffffffffffff166122f7612057565b73ffffffffffffffffffffffffffffffffffffffff161461234d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612344906151c7565b60405180910390fd5b81819050848490501461238c576040517f74f4d53700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848490508161ffff16101561247a5782828261ffff168181106123b5576123b4615b73565b5b90506020020160208101906123ca919061426a565b606b600087878561ffff168181106123e5576123e4615b73565b5b90506020020160208101906123fa9190614369565b61ffff1661ffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061247290615aa1565b91505061238f565b5061248485610c03565b61249257612491856117a6565b5b7f4dcd99505817a4d3e4d3f751a4a49739ec38cb0f83319ff1224a3b289597e86c85858585856040516124c9959493929190614f31565b60405180910390a15050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b60008761ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c6040518863ffffffff1660e01b815260040161262a9796959493929190615267565b60006040518083038186803b15801561264257600080fd5b505af4158015612656573d6000803e3d6000fd5b505050506126aa898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088613305565b80925081935050508280156126bd575081155b156126f4576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b97509795505050505050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff81111561274857612747615ba2565b5b6040519080825280602002602001820160405280156127765781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128495750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561285457508482105b1561291c578084838151811061286d5761286c615b73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061291490615acc565b9250506127df565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612959613008565b73ffffffffffffffffffffffffffffffffffffffff16612977612057565b73ffffffffffffffffffffffffffffffffffffffff16146129cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c4906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a375750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90615247565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051612cce9190614f16565b60405180910390a15050565b612ce2613008565b73ffffffffffffffffffffffffffffffffffffffff16612d00612057565b73ffffffffffffffffffffffffffffffffffffffff1614612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e73578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612de3919061514c565b60206040518083038186803b158015612dfb57600080fd5b505afa158015612e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e339190614297565b612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990615207565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612f059190614f16565b60405180910390a150565b612f18613008565b73ffffffffffffffffffffffffffffffffffffffff16612f36612057565b73ffffffffffffffffffffffffffffffffffffffff1614612f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f83906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff390615187565b60405180910390fd5b61300581613609565b50565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314257606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b815260040161310f9b9a99989796959493929190614fef565b600060405180830381600087803b15801561312957600080fd5b505af115801561313d573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016131a39493929190614fa3565b602060405180830381600087803b1580156131bd57600080fd5b505af11580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f59190614297565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132fd57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b81526004016132ca929190615123565b600060405180830381600087803b1580156132e457600080fd5b505af11580156132f8573d6000803e3d6000fd5b505050505b949350505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461343a57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528787878760008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016134079b9a99989796959493929190614fef565b600060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635229073f878787876040518563ffffffff1660e01b815260040161349b9493929190614fa3565b600060405180830381600087803b1580156134b557600080fd5b505af11580156134c9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134f291906142c4565b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461360057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b81526004016135cd929190615123565b600060405180830381600087803b1580156135e757600080fd5b505af11580156135fb573d6000803e3d6000fd5b505050505b94509492505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff16806136f5575060008054906101000a900460ff16155b613734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372b906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613784576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61378c613900565b6137946139d9565b80156137b55760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461387e576040517ff736703400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680613926575060008054906101000a900460ff16155b613965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395c906151a7565b60405180910390fd5b60008060019054906101000a900460ff1615905080156139b5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156139d65760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806139ff575060008054906101000a900460ff16155b613a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a35906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613a8e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613a9e613a99613008565b613609565b8015613abf5760008060016101000a81548160ff0219169083151502179055505b50565b6000613ad5613ad084615626565b615601565b90508083825260208201905082856020860282011115613af857613af7615be5565b5b60005b85811015613b4657813567ffffffffffffffff811115613b1e57613b1d615bdb565b5b808601613b2b8982613e6f565b85526020850194506020840193505050600181019050613afb565b5050509392505050565b6000613b63613b5e84615652565b615601565b905082815260208101848484011115613b7f57613b7e615bea565b5b613b8a848285615a2e565b509392505050565b6000613ba5613ba084615652565b615601565b905082815260208101848484011115613bc157613bc0615bea565b5b613bcc848285615a3d565b509392505050565b600081359050613be381615df3565b92915050565b600081519050613bf881615e0a565b92915050565b60008083601f840112613c1457613c13615bdb565b5b8235905067ffffffffffffffff811115613c3157613c30615bd6565b5b602083019150836020820283011115613c4d57613c4c615be5565b5b9250929050565b60008083601f840112613c6a57613c69615bdb565b5b8235905067ffffffffffffffff811115613c8757613c86615bd6565b5b602083019150836020820283011115613ca357613ca2615be5565b5b9250929050565b600082601f830112613cbf57613cbe615bdb565b5b8135613ccf848260208601613ac2565b91505092915050565b60008083601f840112613cee57613ced615bdb565b5b8235905067ffffffffffffffff811115613d0b57613d0a615bd6565b5b602083019150836020820283011115613d2757613d26615be5565b5b9250929050565b60008083601f840112613d4457613d43615bdb565b5b8235905067ffffffffffffffff811115613d6157613d60615bd6565b5b602083019150836020820283011115613d7d57613d7c615be5565b5b9250929050565b60008083601f840112613d9a57613d99615bdb565b5b8235905067ffffffffffffffff811115613db757613db6615bd6565b5b602083019150836020820283011115613dd357613dd2615be5565b5b9250929050565b600081359050613de981615e21565b92915050565b600081519050613dfe81615e21565b92915050565b600081359050613e1381615e38565b92915050565b60008083601f840112613e2f57613e2e615bdb565b5b8235905067ffffffffffffffff811115613e4c57613e4b615bd6565b5b602083019150836001820283011115613e6857613e67615be5565b5b9250929050565b600082601f830112613e8457613e83615bdb565b5b8135613e94848260208601613b50565b91505092915050565b600082601f830112613eb257613eb1615bdb565b5b8151613ec2848260208601613b92565b91505092915050565b600081359050613eda81615e4f565b92915050565b600081359050613eef81615e5f565b92915050565b600081359050613f0481615e6f565b92915050565b600081359050613f1981615e7f565b92915050565b600081359050613f2e81615e8f565b92915050565b600081359050613f4381615ea6565b92915050565b600081359050613f5881615ebd565b92915050565b600060208284031215613f7457613f73615bf9565b5b6000613f8284828501613bd4565b91505092915050565b600080600060608486031215613fa457613fa3615bf9565b5b6000613fb286828701613be9565b9350506020613fc386828701613be9565b9250506040613fd486828701613be9565b9150509250925092565b60008060408385031215613ff557613ff4615bf9565b5b600061400385828601613bd4565b925050602061401485828601613bd4565b9150509250929050565b60008060008060006060868803121561403a57614039615bf9565b5b600061404888828901613bd4565b955050602086013567ffffffffffffffff81111561406957614068615bef565b5b61407588828901613d84565b9450945050604086013567ffffffffffffffff81111561409857614097615bef565b5b6140a488828901613bfe565b92509250509295509295909350565b600080604083850312156140ca576140c9615bf9565b5b60006140d885828601613bd4565b92505060206140e985828601613f1f565b9150509250929050565b6000806040838503121561410a57614109615bf9565b5b600061411885828601613bd4565b925050602061412985828601613f34565b9150509250929050565b60008060008060006080868803121561414f5761414e615bf9565b5b600061415d88828901613bd4565b955050602061416e88828901613f34565b945050604086013567ffffffffffffffff81111561418f5761418e615bef565b5b61419b88828901613e19565b935093505060606141ae88828901613ef5565b9150509295509295909350565b600080600080600080600060c0888a0312156141da576141d9615bf9565b5b60006141e88a828b01613bd4565b97505060206141f98a828b01613f34565b965050604088013567ffffffffffffffff81111561421a57614219615bef565b5b6142268a828b01613e19565b955095505060606142398a828b01613ef5565b935050608061424a8a828b01613f1f565b92505060a061425b8a828b01613dda565b91505092959891949750929550565b6000602082840312156142805761427f615bf9565b5b600061428e84828501613dda565b91505092915050565b6000602082840312156142ad576142ac615bf9565b5b60006142bb84828501613def565b91505092915050565b600080604083850312156142db576142da615bf9565b5b60006142e985828601613def565b925050602083015167ffffffffffffffff81111561430a57614309615bef565b5b61431685828601613e9d565b9150509250929050565b60006020828403121561433657614335615bf9565b5b600082013567ffffffffffffffff81111561435457614353615bef565b5b61436084828501613e6f565b91505092915050565b60006020828403121561437f5761437e615bf9565b5b600061438d84828501613f1f565b91505092915050565b600080604083850312156143ad576143ac615bf9565b5b60006143bb85828601613f1f565b92505060206143cc85828601613bd4565b9150509250929050565b6000806000606084860312156143ef576143ee615bf9565b5b60006143fd86828701613f1f565b935050602061440e86828701613bd4565b925050604061441f86828701613e04565b9150509250925092565b60008060008060008060008060008060006101008c8e03121561444f5761444e615bf9565b5b600061445d8e828f01613f1f565b9b5050602061446e8e828f01613bd4565b9a5050604061447f8e828f01613e04565b99505060608c013567ffffffffffffffff8111156144a05761449f615bef565b5b6144ac8e828f01613bfe565b985098505060808c013567ffffffffffffffff8111156144cf576144ce615bef565b5b6144db8e828f01613d2e565b965096505060a08c013567ffffffffffffffff8111156144fe576144fd615bef565b5b61450a8e828f01613cd8565b945094505060c08c013567ffffffffffffffff81111561452d5761452c615bef565b5b6145398e828f01613caa565b92505060e061454a8e828f01613ee0565b9150509295989b509295989b9093969950565b6000806000806080858703121561457757614576615bf9565b5b600061458587828801613f1f565b945050602061459687828801613bd4565b93505060406145a787828801613e04565b92505060606145b887828801613ee0565b91505092959194509250565b600080600080600080600060c0888a0312156145e3576145e2615bf9565b5b60006145f18a828b01613f1f565b97505060206146028a828b01613bd4565b96505060406146138a828b01613e04565b95505060606146248a828b01613f34565b94505060806146358a828b01613f0a565b93505060a088013567ffffffffffffffff81111561465657614655615bef565b5b6146628a828b01613c54565b925092505092959891949750929550565b60008060008060008060008060e0898b03121561469357614692615bf9565b5b60006146a18b828c01613f1f565b98505060206146b28b828c01613bd4565b97505060406146c38b828c01613e04565b96505060606146d48b828c01613f34565b95505060806146e58b828c01613f0a565b94505060a06146f68b828c01613ecb565b93505060c089013567ffffffffffffffff81111561471757614716615bef565b5b6147238b828c01613e19565b92509250509295985092959890939650565b6000806000806080858703121561474f5761474e615bf9565b5b600061475d87828801613f1f565b945050602061476e87828801613bd4565b935050604061477f87828801613e04565b925050606061479087828801613f49565b91505092959194509250565b6000806000606084860312156147b5576147b4615bf9565b5b60006147c386828701613f1f565b93505060206147d486828701613bd4565b92505060406147e586828701613ee0565b9150509250925092565b60006147fb83836148b8565b60208301905092915050565b60006148138383614bff565b60208301905092915050565b600061482b8383614c1d565b60208301905092915050565b6000614844848484614c86565b90509392505050565b60006148598383614cec565b905092915050565b600061486d8383614d34565b60208301905092915050565b60006148858383614d7f565b60208301905092915050565b600061489d8383614ebc565b60208301905092915050565b6148b2816158dd565b82525050565b6148c1816158cb565b82525050565b6148d0816158cb565b82525050565b6148df816158cb565b82525050565b60006148f0826156d5565b6148fa8185615751565b935061490583615683565b8060005b8381101561493657815161491d88826147ef565b9750614928836156f6565b925050600181019050614909565b5085935050505092915050565b600061494f8385615762565b935061495a82615693565b8060005b8581101561499357614970828461580c565b61497a8882614807565b975061498583615703565b92505060018101905061495e565b5085925050509392505050565b60006149ac8385615773565b93506149b782615693565b8060005b858110156149f0576149cd828461580c565b6149d7888261481f565b97506149e283615703565b9250506001810190506149bb565b5085925050509392505050565b6000614a098385615784565b935083602084028501614a1b8461569d565b8060005b87811015614a61578484038952614a368284615823565b614a41868284614837565b9550614a4c84615710565b935060208b019a505050600181019050614a1f565b50829750879450505050509392505050565b6000614a7e826156e0565b614a888185615784565b935083602082028501614a9a856156a7565b8060005b85811015614ad65784840389528151614ab7858261484d565b9450614ac28361571d565b925060208a01995050600181019050614a9e565b50829750879550505050505092915050565b6000614af48385615795565b9350614aff826156b7565b8060005b85811015614b3857614b158284615886565b614b1f8882614861565b9750614b2a8361572a565b925050600181019050614b03565b5085925050509392505050565b6000614b5183856157a6565b9350614b5c826156c1565b8060005b85811015614b9557614b72828461589d565b614b7c8882614879565b9750614b8783615737565b925050600181019050614b60565b5085925050509392505050565b6000614bae83856157b7565b9350614bb9826156cb565b8060005b85811015614bf257614bcf82846158b4565b614bd98882614891565b9750614be483615744565b925050600181019050614bbd565b5085925050509392505050565b614c08816158ef565b82525050565b614c17816158ef565b82525050565b614c26816158ef565b82525050565b614c35816158fb565b82525050565b614c4481615905565b82525050565b614c5381615905565b82525050565b6000614c6583856157d9565b9350614c72838584615a2e565b614c7b83615bfe565b840190509392505050565b6000614c9283856157ea565b9350614c9f838584615a2e565b614ca883615bfe565b840190509392505050565b6000614cbe826156eb565b614cc881856157c8565b9350614cd8818560208601615a3d565b614ce181615bfe565b840191505092915050565b6000614cf7826156eb565b614d0181856157ea565b9350614d11818560208601615a3d565b614d1a81615bfe565b840191505092915050565b614d2e816159c2565b82525050565b614d3d816159c2565b82525050565b614d4c816159d4565b82525050565b614d5b816159e6565b82525050565b614d6a816159e6565b82525050565b614d79816159f8565b82525050565b614d88816159f8565b82525050565b614d9781615a0a565b82525050565b6000614daa6017836157fb565b9150614db582615c0f565b602082019050919050565b6000614dcd6026836157fb565b9150614dd882615c38565b604082019050919050565b6000614df0602e836157fb565b9150614dfb82615c87565b604082019050919050565b6000614e136020836157fb565b9150614e1e82615cd6565b602082019050919050565b6000614e366015836157fb565b9150614e4182615cff565b602082019050919050565b6000614e596020836157fb565b9150614e6482615d28565b602082019050919050565b6000614e7c6016836157fb565b9150614e8782615d51565b602082019050919050565b6000614e9f600e836157fb565b9150614eaa82615d7a565b602082019050919050565b8082525050565b614ec58161597d565b82525050565b614ed48161597d565b82525050565b614ee38161597d565b82525050565b614ef2816159ab565b82525050565b614f01816159ab565b82525050565b614f1081615a1c565b82525050565b6000602082019050614f2b60008301846148c7565b92915050565b6000606082019050614f4660008301886148c7565b8181036020830152614f59818688614ba2565b90508181036040830152614f6e818486614943565b90509695505050505050565b6000604082019050614f8f60008301856148c7565b614f9c6020830184614ecb565b9392505050565b6000608082019050614fb860008301876148c7565b614fc56020830186614ee9565b8181036040830152614fd78185614cb3565b9050614fe66060830184614d52565b95945050505050565b600061016082019050615005600083018e6148c7565b615012602083018d614ee9565b8181036040830152615024818c614cb3565b9050615033606083018b614d52565b615040608083018a614d8e565b61504d60a0830189614d8e565b61505a60c0830188614d8e565b61506760e08301876148c7565b6150756101008301866148a9565b8181036101208301526150888185614cb3565b90506150986101408301846148c7565b9c9b505050505050505050505050565b600060408201905081810360008301526150c281856148e5565b90506150d160208301846148c7565b9392505050565b60006020820190506150ed6000830184614c0e565b92915050565b60006040820190506151086000830185614c0e565b818103602083015261511a8184614cb3565b90509392505050565b60006040820190506151386000830185614c2c565b6151456020830184614c0e565b9392505050565b60006020820190506151616000830184614c3b565b92915050565b6000602082019050818103600083015261518081614d9d565b9050919050565b600060208201905081810360008301526151a081614dc0565b9050919050565b600060208201905081810360008301526151c081614de3565b9050919050565b600060208201905081810360008301526151e081614e06565b9050919050565b6000602082019050818103600083015261520081614e29565b9050919050565b6000602082019050818103600083015261522081614e4c565b9050919050565b6000602082019050818103600083015261524081614e6f565b9050919050565b6000602082019050818103600083015261526081614e92565b9050919050565b600060c08201905061527c600083018a614eb5565b61528960208301896148d6565b61529660408301886148d6565b6152a36060830187614ef8565b81810360808301526152b6818587614c59565b90506152c560a0830184614d61565b98975050505050505050565b60006060820190506152e66000830186614eb5565b6152f36020830185614eda565b61530060408301846148d6565b949350505050565b600060808201905061531d6000830187614eb5565b61532a6020830186614eda565b61533760408301856148d6565b6153446060830184614c4a565b95945050505050565b600061012082019050615363600083018f614eb5565b615370602083018e614eda565b61537d604083018d6148d6565b61538a606083018c614c4a565b818103608083015261539d818a8c6149a0565b905081810360a08301526153b281888a614b45565b905081810360c08301526153c7818688614ae8565b905081810360e08301526153db8185614a73565b90506153eb610100830184614d43565b9d9c50505050505050505050505050565b600060a0820190506154116000830188614eb5565b61541e6020830187614eda565b61542b60408301866148d6565b6154386060830185614c4a565b6154456080830184614d43565b9695505050505050565b600060e082019050615464600083018b614eb5565b615471602083018a614eda565b61547e60408301896148d6565b61548b6060830188614c4a565b6154986080830187614ef8565b6154a560a0830186614d70565b81810360c08301526154b88184866149fd565b90509998505050505050505050565b6000610100820190506154dd600083018c614eb5565b6154ea602083018b614eda565b6154f7604083018a6148d6565b6155046060830189614c4a565b6155116080830188614ef8565b61551e60a0830187614d70565b61552b60c0830186614d25565b81810360e083015261553e818486614c59565b90509a9950505050505050505050565b600060a0820190506155636000830188614eb5565b6155706020830187614eda565b61557d60408301866148d6565b61558a6060830185614c4a565b6155976080830184614f07565b9695505050505050565b60006080820190506155b66000830187614eb5565b6155c36020830186614eda565b6155d060408301856148d6565b6155dd6060830184614d43565b95945050505050565b60006020820190506155fb6000830184614ecb565b92915050565b600061560b61561c565b90506156178282615a70565b919050565b6000604051905090565b600067ffffffffffffffff82111561564157615640615ba2565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561566d5761566c615ba2565b5b61567682615bfe565b9050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061581b6020840184613dda565b905092915050565b600080833560016020038436030381126158405761583f615bf4565b5b83810192508235915060208301925067ffffffffffffffff82111561586857615867615bd1565b5b60018202360384131561587e5761587d615be0565b5b509250929050565b60006158956020840184613ecb565b905092915050565b60006158ac6020840184613f0a565b905092915050565b60006158c36020840184613f1f565b905092915050565b60006158d68261598b565b9050919050565b60006158e88261598b565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061593f82615da3565b919050565b600081905061595282615db7565b919050565b600081905061596582615dcb565b919050565b600081905061597882615ddf565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006159cd82615931565b9050919050565b60006159df82615944565b9050919050565b60006159f182615957565b9050919050565b6000615a038261596a565b9050919050565b6000615a15826159ab565b9050919050565b6000615a27826159b5565b9050919050565b82818337600083830152505050565b60005b83811015615a5b578082015181840152602081019050615a40565b83811115615a6a576000848401525b50505050565b615a7982615bfe565b810181811067ffffffffffffffff82111715615a9857615a97615ba2565b5b80604052505050565b6000615aac8261597d565b915061ffff821415615ac157615ac0615b15565b5b600182019050919050565b6000615ad7826159ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615b0a57615b09615b15565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d6f64756c6520616c72656164792064697361626c6564000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6f64756c65206e6f7420617574686f72697a65640000000000000000000000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f4d6f64756c6520616c726561647920656e61626c656400000000000000000000600082015250565b7f496e76616c6964206d6f64756c65000000000000000000000000000000000000600082015250565b60048110615db457615db3615b44565b5b50565b60048110615dc857615dc7615b44565b5b50565b60028110615ddc57615ddb615b44565b5b50565b60038110615df057615def615b44565b5b50565b615dfc816158cb565b8114615e0757600080fd5b50565b615e13816158dd565b8114615e1e57600080fd5b50565b615e2a816158ef565b8114615e3557600080fd5b50565b615e4181615905565b8114615e4c57600080fd5b50565b60048110615e5c57600080fd5b50565b60048110615e6c57600080fd5b50565b60028110615e7c57600080fd5b50565b60038110615e8c57600080fd5b50565b615e988161597d565b8114615ea357600080fd5b50565b615eaf816159ab565b8114615eba57600080fd5b50565b615ec6816159b5565b8114615ed157600080fd5b5056fea26469706673582212201b02673520ea9284b2f57287bb54a9784eae9a7d7b2ce9eb5f58478be826f60064736f6c63430008060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102065760003560e01c8063610b59251161011a578063a4f9edbf116100ad578063cc2f84521161007c578063cc2f8452146105a9578063d4b83992146105da578063e009cfde146105f8578063e19a9dd914610614578063f2fde38b1461063057610206565b8063a4f9edbf14610522578063a6edf38f1461053e578063b0c199121461055a578063c91063891461058b57610206565b80637ceab3b1116100e95780637ceab3b1146104ae5780638b95eccd146104cc5780638da5cb5b146104e8578063939337721461050657610206565b8063610b59251461043c5780636928e74b14610458578063715018a614610488578063776d1a011461049257610206565b80632e506a481161019d578063468721a71161016c578063468721a71461038557806351fa1d73146103b55780635229073f146103d15780635aef7de6146104025780635e8266951461042057610206565b80632e506a48146103155780632fcf52d11461033157806333a0480c1461034d5780633c1952b81461036957610206565b80632933ef1c116101d95780632933ef1c1461027b578063294402cc146102975780632d3c2547146102b55780632d9ad53d146102e557610206565b8063086cfca81461020b5780630de729c714610227578063102b7fe61461024357806315b77d3f1461025f575b600080fd5b61022560048036038101906102209190613f5e565b61064c565b005b610241600480360381019061023c919061479c565b61078e565b005b61025d600480360381019061025891906140b3565b610896565b005b6102796004803603810190610274919061455d565b6109a9565b005b610295600480360381019061029091906143d6565b610ab4565b005b61029f610bbc565b6040516102ac9190614f16565b60405180910390f35b6102cf60048036038101906102ca9190613f5e565b610be2565b6040516102dc91906155e6565b60405180910390f35b6102ff60048036038101906102fa9190613f5e565b610c03565b60405161030c91906150d8565b60405180910390f35b61032f600480360381019061032a9190614735565b610cd5565b005b61034b6004803603810190610346919061455d565b610de0565b005b61036760048036038101906103629190614429565b610eeb565b005b610383600480360381019061037e9190614673565b61100b565b005b61039f600480360381019061039a9190614133565b611122565b6040516103ac91906150d8565b60405180910390f35b6103cf60048036038101906103ca9190614396565b611349565b005b6103eb60048036038101906103e69190614133565b61144e565b6040516103f99291906150f3565b60405180910390f35b61040a61167b565b6040516104179190614f16565b60405180910390f35b61043a60048036038101906104359190614396565b6116a1565b005b61045660048036038101906104519190613f5e565b6117a6565b005b610472600480360381019061046d91906141bb565b611b30565b60405161047f91906150d8565b60405180910390f35b610490611d4e565b005b6104ac60048036038101906104a79190613f5e565b611dd6565b005b6104b6611f18565b6040516104c39190614f16565b60405180910390f35b6104e660048036038101906104e19190613f5e565b611f3e565b005b6104f0612057565b6040516104fd9190614f16565b60405180910390f35b610520600480360381019061051b91906145c4565b612081565b005b61053c60048036038101906105379190614320565b612195565b005b6105586004803603810190610553919061401e565b6122d1565b005b610574600480360381019061056f91906141bb565b6124d8565b6040516105829291906150f3565b60405180910390f35b610593612700565b6040516105a09190614f16565b60405180910390f35b6105c360048036038101906105be91906140f3565b61272a565b6040516105d19291906150a8565b60405180910390f35b6105e261292b565b6040516105ef9190614f16565b60405180910390f35b610612600480360381019061060d9190613fde565b612951565b005b61062e60048036038101906106299190613f5e565b612cda565b005b61064a60048036038101906106459190613f5e565b612f10565b005b610654613008565b73ffffffffffffffffffffffffffffffffffffffff16610672612057565b73ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf906151c7565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b610796613008565b73ffffffffffffffffffffffffffffffffffffffff166107b4612057565b73ffffffffffffffffffffffffffffffffffffffff161461080a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610801906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63a2f6f6d0606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b815260040161086194939291906155a1565b60006040518083038186803b15801561087957600080fd5b505af415801561088d573d6000803e3d6000fd5b50505050505050565b61089e613008565b73ffffffffffffffffffffffffffffffffffffffff166108bc612057565b73ffffffffffffffffffffffffffffffffffffffff1614610912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610909906151c7565b60405180910390fd5b80606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055507f197e61bb67ba4b0f657afcb5d2dbed385d50b697c51090f466cdbcc4c30a21ce828260405161099d929190614f7a565b60405180910390a15050565b6109b1613008565b73ffffffffffffffffffffffffffffffffffffffff166109cf612057565b73ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63163592dd606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610a7e9594939291906153fc565b60006040518083038186803b158015610a9657600080fd5b505af4158015610aaa573d6000803e3d6000fd5b5050505050505050565b610abc613008565b73ffffffffffffffffffffffffffffffffffffffff16610ada612057565b73ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b27906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__6377cff804606b60008661ffff1661ffff1681526020019081526020016000208585856040518563ffffffff1660e01b8152600401610b879493929190615308565b60006040518083038186803b158015610b9f57600080fd5b505af4158015610bb3573d6000803e3d6000fd5b50505050505050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a6020528060005260406000206000915054906101000a900461ffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff1614158015610cce5750600073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b610cdd613008565b73ffffffffffffffffffffffffffffffffffffffff16610cfb612057565b73ffffffffffffffffffffffffffffffffffffffff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d48906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__633c5a24e2606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610daa95949392919061554e565b60006040518083038186803b158015610dc257600080fd5b505af4158015610dd6573d6000803e3d6000fd5b5050505050505050565b610de8613008565b73ffffffffffffffffffffffffffffffffffffffff16610e06612057565b73ffffffffffffffffffffffffffffffffffffffff1614610e5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e53906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__635ebbaa68606b60008761ffff1661ffff168152602001908152602001600020868686866040518663ffffffff1660e01b8152600401610eb59594939291906153fc565b60006040518083038186803b158015610ecd57600080fd5b505af4158015610ee1573d6000803e3d6000fd5b5050505050505050565b610ef3613008565b73ffffffffffffffffffffffffffffffffffffffff16610f11612057565b73ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__632af6aecb606b60008e61ffff1661ffff1681526020019081526020016000208d8d8d8d8d8d8d8d8d8d8d6040518d63ffffffff1660e01b8152600401610fce9c9b9a9998979695949392919061534d565b60006040518083038186803b158015610fe657600080fd5b505af4158015610ffa573d6000803e3d6000fd5b505050505050505050505050505050565b611013613008565b73ffffffffffffffffffffffffffffffffffffffff16611031612057565b73ffffffffffffffffffffffffffffffffffffffff1614611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63edf909e3606b60008b61ffff1661ffff1681526020019081526020016000208a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b81526004016110e8999897969594939291906154c7565b60006040518083038186803b15801561110057600080fd5b505af4158015611114573d6000803e3d6000fd5b505050505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e9906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1689898989896040518863ffffffff1660e01b81526004016112be9796959493929190615267565b60006040518083038186803b1580156112d657600080fd5b505af41580156112ea573d6000803e3d6000fd5b5050505061133e868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505085613010565b905095945050505050565b611351613008565b73ffffffffffffffffffffffffffffffffffffffff1661136f612057565b73ffffffffffffffffffffffffffffffffffffffff16146113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63cfe4317a606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b815260040161141a939291906152d1565b60006040518083038186803b15801561143257600080fd5b505af4158015611446573d6000803e3d6000fd5b505050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611521576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611518906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b6000606a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff1661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a8a8a8a8a6040518863ffffffff1660e01b81526004016115ed9796959493929190615267565b60006040518083038186803b15801561160557600080fd5b505af4158015611619573d6000803e3d6000fd5b5050505061166d878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086613305565b915091509550959350505050565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116a9613008565b73ffffffffffffffffffffffffffffffffffffffff166116c7612057565b73ffffffffffffffffffffffffffffffffffffffff161461171d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611714906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63ee54ca53606b60008561ffff1661ffff16815260200190815260200160002084846040518463ffffffff1660e01b8152600401611772939291906152d1565b60006040518083038186803b15801561178a57600080fd5b505af415801561179e573d6000803e3d6000fd5b505050505050565b6117ae613008565b73ffffffffffffffffffffffffffffffffffffffff166117cc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611822576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611819906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561188c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c290615247565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090615227565b60405180910390fd5b60686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844081604051611b259190614f16565b60405180910390a150565b60008073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf7906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b60008661ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8b8b8b8b6040518863ffffffff1660e01b8152600401611c7f9796959493929190615267565b60006040518083038186803b158015611c9757600080fd5b505af4158015611cab573d6000803e3d6000fd5b50505050611cff888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087613010565b9050818015611d0c575080155b15611d43576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b979650505050505050565b611d56613008565b73ffffffffffffffffffffffffffffffffffffffff16611d74612057565b73ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc1906151c7565b60405180910390fd5b611dd46000613609565b565b611dde613008565b73ffffffffffffffffffffffffffffffffffffffff16611dfc612057565b73ffffffffffffffffffffffffffffffffffffffff1614611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e49906151c7565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f46613008565b73ffffffffffffffffffffffffffffffffffffffff16611f64612057565b73ffffffffffffffffffffffffffffffffffffffff1614611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb1906151c7565b60405180910390fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5fe6aabf4e790843df43ae0e22b58620066fb389295bedc06a92df6c3b28777d606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161204c9190614f16565b60405180910390a150565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612089613008565b73ffffffffffffffffffffffffffffffffffffffff166120a7612057565b73ffffffffffffffffffffffffffffffffffffffff16146120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906151c7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63512ce0f2606b60008a61ffff1661ffff168152602001908152602001600020898989898989896040518963ffffffff1660e01b815260040161215c98979695949392919061544f565b60006040518083038186803b15801561217457600080fd5b505af4158015612188573d6000803e3d6000fd5b5050505050505050505050565b6000806000838060200190518101906121ae9190613f8b565b9250925092506121bc6136cf565b81606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061224783612f10565b61224f6137b8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f34d3b96a088381c6843a1f9d94d251afa88f83cc7a0d17fc23a7057506a3fc6d846040516122c39190614f16565b60405180910390a450505050565b6122d9613008565b73ffffffffffffffffffffffffffffffffffffffff166122f7612057565b73ffffffffffffffffffffffffffffffffffffffff161461234d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612344906151c7565b60405180910390fd5b81819050848490501461238c576040517f74f4d53700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848490508161ffff16101561247a5782828261ffff168181106123b5576123b4615b73565b5b90506020020160208101906123ca919061426a565b606b600087878561ffff168181106123e5576123e4615b73565b5b90506020020160208101906123fa9190614369565b61ffff1661ffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061247290615aa1565b91505061238f565b5061248485610c03565b61249257612491856117a6565b5b7f4dcd99505817a4d3e4d3f751a4a49739ec38cb0f83319ff1224a3b289597e86c85858585856040516124c9959493929190614f31565b60405180910390a15050505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a2906151e7565b60405180910390fd5b73__$26c8ee7675adcd4387514ebc7646e15ffa$__63db50e575606b60008761ffff1661ffff168152602001908152602001600020606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c6040518863ffffffff1660e01b815260040161262a9796959493929190615267565b60006040518083038186803b15801561264257600080fd5b505af4158015612656573d6000803e3d6000fd5b505050506126aa898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088613305565b80925081935050508280156126bd575081155b156126f4576040517fd27b44a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b97509795505050505050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060008267ffffffffffffffff81111561274857612747615ba2565b5b6040519080825280602002602001820160405280156127765781602001602082028036833780820191505090505b509150600080606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156128495750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561285457508482105b1561291c578084838151811061286d5761286c615b73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818061291490615acc565b9250506127df565b80925081845250509250929050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612959613008565b73ffffffffffffffffffffffffffffffffffffffff16612977612057565b73ffffffffffffffffffffffffffffffffffffffff16146129cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129c4906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612a375750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90615247565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b606860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427681604051612cce9190614f16565b60405180910390a15050565b612ce2613008565b73ffffffffffffffffffffffffffffffffffffffff16612d00612057565b73ffffffffffffffffffffffffffffffffffffffff1614612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612e73578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612de3919061514c565b60206040518083038186803b158015612dfb57600080fd5b505afa158015612e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e339190614297565b612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990615207565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612f059190614f16565b60405180910390a150565b612f18613008565b73ffffffffffffffffffffffffffffffffffffffff16612f36612057565b73ffffffffffffffffffffffffffffffffffffffff1614612f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f83906151c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff390615187565b60405180910390fd5b61300581613609565b50565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314257606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b815260040161310f9b9a99989796959493929190614fef565b600060405180830381600087803b15801561312957600080fd5b505af115801561313d573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b81526004016131a39493929190614fa3565b602060405180830381600087803b1580156131bd57600080fd5b505af11580156131d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f59190614297565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132fd57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b81526004016132ca929190615123565b600060405180830381600087803b1580156132e457600080fd5b505af11580156132f8573d6000803e3d6000fd5b505050505b949350505050565b60006060600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461343a57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528787878760008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b81526004016134079b9a99989796959493929190614fef565b600060405180830381600087803b15801561342157600080fd5b505af1158015613435573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635229073f878787876040518563ffffffff1660e01b815260040161349b9493929190614fa3565b600060405180830381600087803b1580156134b557600080fd5b505af11580156134c9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906134f291906142c4565b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461360057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b81526004016135cd929190615123565b600060405180830381600087803b1580156135e757600080fd5b505af11580156135fb573d6000803e3d6000fd5b505050505b94509492505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff16806136f5575060008054906101000a900460ff16155b613734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161372b906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613784576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b61378c613900565b6137946139d9565b80156137b55760008060016101000a81548160ff0219169083151502179055505b50565b600073ffffffffffffffffffffffffffffffffffffffff1660686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461387e576040517ff736703400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160686000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff1680613926575060008054906101000a900460ff16155b613965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395c906151a7565b60405180910390fd5b60008060019054906101000a900460ff1615905080156139b5576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156139d65760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806139ff575060008054906101000a900460ff16155b613a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a35906151a7565b60405180910390fd5b60008060019054906101000a900460ff161590508015613a8e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613a9e613a99613008565b613609565b8015613abf5760008060016101000a81548160ff0219169083151502179055505b50565b6000613ad5613ad084615626565b615601565b90508083825260208201905082856020860282011115613af857613af7615be5565b5b60005b85811015613b4657813567ffffffffffffffff811115613b1e57613b1d615bdb565b5b808601613b2b8982613e6f565b85526020850194506020840193505050600181019050613afb565b5050509392505050565b6000613b63613b5e84615652565b615601565b905082815260208101848484011115613b7f57613b7e615bea565b5b613b8a848285615a2e565b509392505050565b6000613ba5613ba084615652565b615601565b905082815260208101848484011115613bc157613bc0615bea565b5b613bcc848285615a3d565b509392505050565b600081359050613be381615df3565b92915050565b600081519050613bf881615e0a565b92915050565b60008083601f840112613c1457613c13615bdb565b5b8235905067ffffffffffffffff811115613c3157613c30615bd6565b5b602083019150836020820283011115613c4d57613c4c615be5565b5b9250929050565b60008083601f840112613c6a57613c69615bdb565b5b8235905067ffffffffffffffff811115613c8757613c86615bd6565b5b602083019150836020820283011115613ca357613ca2615be5565b5b9250929050565b600082601f830112613cbf57613cbe615bdb565b5b8135613ccf848260208601613ac2565b91505092915050565b60008083601f840112613cee57613ced615bdb565b5b8235905067ffffffffffffffff811115613d0b57613d0a615bd6565b5b602083019150836020820283011115613d2757613d26615be5565b5b9250929050565b60008083601f840112613d4457613d43615bdb565b5b8235905067ffffffffffffffff811115613d6157613d60615bd6565b5b602083019150836020820283011115613d7d57613d7c615be5565b5b9250929050565b60008083601f840112613d9a57613d99615bdb565b5b8235905067ffffffffffffffff811115613db757613db6615bd6565b5b602083019150836020820283011115613dd357613dd2615be5565b5b9250929050565b600081359050613de981615e21565b92915050565b600081519050613dfe81615e21565b92915050565b600081359050613e1381615e38565b92915050565b60008083601f840112613e2f57613e2e615bdb565b5b8235905067ffffffffffffffff811115613e4c57613e4b615bd6565b5b602083019150836001820283011115613e6857613e67615be5565b5b9250929050565b600082601f830112613e8457613e83615bdb565b5b8135613e94848260208601613b50565b91505092915050565b600082601f830112613eb257613eb1615bdb565b5b8151613ec2848260208601613b92565b91505092915050565b600081359050613eda81615e4f565b92915050565b600081359050613eef81615e5f565b92915050565b600081359050613f0481615e6f565b92915050565b600081359050613f1981615e7f565b92915050565b600081359050613f2e81615e8f565b92915050565b600081359050613f4381615ea6565b92915050565b600081359050613f5881615ebd565b92915050565b600060208284031215613f7457613f73615bf9565b5b6000613f8284828501613bd4565b91505092915050565b600080600060608486031215613fa457613fa3615bf9565b5b6000613fb286828701613be9565b9350506020613fc386828701613be9565b9250506040613fd486828701613be9565b9150509250925092565b60008060408385031215613ff557613ff4615bf9565b5b600061400385828601613bd4565b925050602061401485828601613bd4565b9150509250929050565b60008060008060006060868803121561403a57614039615bf9565b5b600061404888828901613bd4565b955050602086013567ffffffffffffffff81111561406957614068615bef565b5b61407588828901613d84565b9450945050604086013567ffffffffffffffff81111561409857614097615bef565b5b6140a488828901613bfe565b92509250509295509295909350565b600080604083850312156140ca576140c9615bf9565b5b60006140d885828601613bd4565b92505060206140e985828601613f1f565b9150509250929050565b6000806040838503121561410a57614109615bf9565b5b600061411885828601613bd4565b925050602061412985828601613f34565b9150509250929050565b60008060008060006080868803121561414f5761414e615bf9565b5b600061415d88828901613bd4565b955050602061416e88828901613f34565b945050604086013567ffffffffffffffff81111561418f5761418e615bef565b5b61419b88828901613e19565b935093505060606141ae88828901613ef5565b9150509295509295909350565b600080600080600080600060c0888a0312156141da576141d9615bf9565b5b60006141e88a828b01613bd4565b97505060206141f98a828b01613f34565b965050604088013567ffffffffffffffff81111561421a57614219615bef565b5b6142268a828b01613e19565b955095505060606142398a828b01613ef5565b935050608061424a8a828b01613f1f565b92505060a061425b8a828b01613dda565b91505092959891949750929550565b6000602082840312156142805761427f615bf9565b5b600061428e84828501613dda565b91505092915050565b6000602082840312156142ad576142ac615bf9565b5b60006142bb84828501613def565b91505092915050565b600080604083850312156142db576142da615bf9565b5b60006142e985828601613def565b925050602083015167ffffffffffffffff81111561430a57614309615bef565b5b61431685828601613e9d565b9150509250929050565b60006020828403121561433657614335615bf9565b5b600082013567ffffffffffffffff81111561435457614353615bef565b5b61436084828501613e6f565b91505092915050565b60006020828403121561437f5761437e615bf9565b5b600061438d84828501613f1f565b91505092915050565b600080604083850312156143ad576143ac615bf9565b5b60006143bb85828601613f1f565b92505060206143cc85828601613bd4565b9150509250929050565b6000806000606084860312156143ef576143ee615bf9565b5b60006143fd86828701613f1f565b935050602061440e86828701613bd4565b925050604061441f86828701613e04565b9150509250925092565b60008060008060008060008060008060006101008c8e03121561444f5761444e615bf9565b5b600061445d8e828f01613f1f565b9b5050602061446e8e828f01613bd4565b9a5050604061447f8e828f01613e04565b99505060608c013567ffffffffffffffff8111156144a05761449f615bef565b5b6144ac8e828f01613bfe565b985098505060808c013567ffffffffffffffff8111156144cf576144ce615bef565b5b6144db8e828f01613d2e565b965096505060a08c013567ffffffffffffffff8111156144fe576144fd615bef565b5b61450a8e828f01613cd8565b945094505060c08c013567ffffffffffffffff81111561452d5761452c615bef565b5b6145398e828f01613caa565b92505060e061454a8e828f01613ee0565b9150509295989b509295989b9093969950565b6000806000806080858703121561457757614576615bf9565b5b600061458587828801613f1f565b945050602061459687828801613bd4565b93505060406145a787828801613e04565b92505060606145b887828801613ee0565b91505092959194509250565b600080600080600080600060c0888a0312156145e3576145e2615bf9565b5b60006145f18a828b01613f1f565b97505060206146028a828b01613bd4565b96505060406146138a828b01613e04565b95505060606146248a828b01613f34565b94505060806146358a828b01613f0a565b93505060a088013567ffffffffffffffff81111561465657614655615bef565b5b6146628a828b01613c54565b925092505092959891949750929550565b60008060008060008060008060e0898b03121561469357614692615bf9565b5b60006146a18b828c01613f1f565b98505060206146b28b828c01613bd4565b97505060406146c38b828c01613e04565b96505060606146d48b828c01613f34565b95505060806146e58b828c01613f0a565b94505060a06146f68b828c01613ecb565b93505060c089013567ffffffffffffffff81111561471757614716615bef565b5b6147238b828c01613e19565b92509250509295985092959890939650565b6000806000806080858703121561474f5761474e615bf9565b5b600061475d87828801613f1f565b945050602061476e87828801613bd4565b935050604061477f87828801613e04565b925050606061479087828801613f49565b91505092959194509250565b6000806000606084860312156147b5576147b4615bf9565b5b60006147c386828701613f1f565b93505060206147d486828701613bd4565b92505060406147e586828701613ee0565b9150509250925092565b60006147fb83836148b8565b60208301905092915050565b60006148138383614bff565b60208301905092915050565b600061482b8383614c1d565b60208301905092915050565b6000614844848484614c86565b90509392505050565b60006148598383614cec565b905092915050565b600061486d8383614d34565b60208301905092915050565b60006148858383614d7f565b60208301905092915050565b600061489d8383614ebc565b60208301905092915050565b6148b2816158dd565b82525050565b6148c1816158cb565b82525050565b6148d0816158cb565b82525050565b6148df816158cb565b82525050565b60006148f0826156d5565b6148fa8185615751565b935061490583615683565b8060005b8381101561493657815161491d88826147ef565b9750614928836156f6565b925050600181019050614909565b5085935050505092915050565b600061494f8385615762565b935061495a82615693565b8060005b8581101561499357614970828461580c565b61497a8882614807565b975061498583615703565b92505060018101905061495e565b5085925050509392505050565b60006149ac8385615773565b93506149b782615693565b8060005b858110156149f0576149cd828461580c565b6149d7888261481f565b97506149e283615703565b9250506001810190506149bb565b5085925050509392505050565b6000614a098385615784565b935083602084028501614a1b8461569d565b8060005b87811015614a61578484038952614a368284615823565b614a41868284614837565b9550614a4c84615710565b935060208b019a505050600181019050614a1f565b50829750879450505050509392505050565b6000614a7e826156e0565b614a888185615784565b935083602082028501614a9a856156a7565b8060005b85811015614ad65784840389528151614ab7858261484d565b9450614ac28361571d565b925060208a01995050600181019050614a9e565b50829750879550505050505092915050565b6000614af48385615795565b9350614aff826156b7565b8060005b85811015614b3857614b158284615886565b614b1f8882614861565b9750614b2a8361572a565b925050600181019050614b03565b5085925050509392505050565b6000614b5183856157a6565b9350614b5c826156c1565b8060005b85811015614b9557614b72828461589d565b614b7c8882614879565b9750614b8783615737565b925050600181019050614b60565b5085925050509392505050565b6000614bae83856157b7565b9350614bb9826156cb565b8060005b85811015614bf257614bcf82846158b4565b614bd98882614891565b9750614be483615744565b925050600181019050614bbd565b5085925050509392505050565b614c08816158ef565b82525050565b614c17816158ef565b82525050565b614c26816158ef565b82525050565b614c35816158fb565b82525050565b614c4481615905565b82525050565b614c5381615905565b82525050565b6000614c6583856157d9565b9350614c72838584615a2e565b614c7b83615bfe565b840190509392505050565b6000614c9283856157ea565b9350614c9f838584615a2e565b614ca883615bfe565b840190509392505050565b6000614cbe826156eb565b614cc881856157c8565b9350614cd8818560208601615a3d565b614ce181615bfe565b840191505092915050565b6000614cf7826156eb565b614d0181856157ea565b9350614d11818560208601615a3d565b614d1a81615bfe565b840191505092915050565b614d2e816159c2565b82525050565b614d3d816159c2565b82525050565b614d4c816159d4565b82525050565b614d5b816159e6565b82525050565b614d6a816159e6565b82525050565b614d79816159f8565b82525050565b614d88816159f8565b82525050565b614d9781615a0a565b82525050565b6000614daa6017836157fb565b9150614db582615c0f565b602082019050919050565b6000614dcd6026836157fb565b9150614dd882615c38565b604082019050919050565b6000614df0602e836157fb565b9150614dfb82615c87565b604082019050919050565b6000614e136020836157fb565b9150614e1e82615cd6565b602082019050919050565b6000614e366015836157fb565b9150614e4182615cff565b602082019050919050565b6000614e596020836157fb565b9150614e6482615d28565b602082019050919050565b6000614e7c6016836157fb565b9150614e8782615d51565b602082019050919050565b6000614e9f600e836157fb565b9150614eaa82615d7a565b602082019050919050565b8082525050565b614ec58161597d565b82525050565b614ed48161597d565b82525050565b614ee38161597d565b82525050565b614ef2816159ab565b82525050565b614f01816159ab565b82525050565b614f1081615a1c565b82525050565b6000602082019050614f2b60008301846148c7565b92915050565b6000606082019050614f4660008301886148c7565b8181036020830152614f59818688614ba2565b90508181036040830152614f6e818486614943565b90509695505050505050565b6000604082019050614f8f60008301856148c7565b614f9c6020830184614ecb565b9392505050565b6000608082019050614fb860008301876148c7565b614fc56020830186614ee9565b8181036040830152614fd78185614cb3565b9050614fe66060830184614d52565b95945050505050565b600061016082019050615005600083018e6148c7565b615012602083018d614ee9565b8181036040830152615024818c614cb3565b9050615033606083018b614d52565b615040608083018a614d8e565b61504d60a0830189614d8e565b61505a60c0830188614d8e565b61506760e08301876148c7565b6150756101008301866148a9565b8181036101208301526150888185614cb3565b90506150986101408301846148c7565b9c9b505050505050505050505050565b600060408201905081810360008301526150c281856148e5565b90506150d160208301846148c7565b9392505050565b60006020820190506150ed6000830184614c0e565b92915050565b60006040820190506151086000830185614c0e565b818103602083015261511a8184614cb3565b90509392505050565b60006040820190506151386000830185614c2c565b6151456020830184614c0e565b9392505050565b60006020820190506151616000830184614c3b565b92915050565b6000602082019050818103600083015261518081614d9d565b9050919050565b600060208201905081810360008301526151a081614dc0565b9050919050565b600060208201905081810360008301526151c081614de3565b9050919050565b600060208201905081810360008301526151e081614e06565b9050919050565b6000602082019050818103600083015261520081614e29565b9050919050565b6000602082019050818103600083015261522081614e4c565b9050919050565b6000602082019050818103600083015261524081614e6f565b9050919050565b6000602082019050818103600083015261526081614e92565b9050919050565b600060c08201905061527c600083018a614eb5565b61528960208301896148d6565b61529660408301886148d6565b6152a36060830187614ef8565b81810360808301526152b6818587614c59565b90506152c560a0830184614d61565b98975050505050505050565b60006060820190506152e66000830186614eb5565b6152f36020830185614eda565b61530060408301846148d6565b949350505050565b600060808201905061531d6000830187614eb5565b61532a6020830186614eda565b61533760408301856148d6565b6153446060830184614c4a565b95945050505050565b600061012082019050615363600083018f614eb5565b615370602083018e614eda565b61537d604083018d6148d6565b61538a606083018c614c4a565b818103608083015261539d818a8c6149a0565b905081810360a08301526153b281888a614b45565b905081810360c08301526153c7818688614ae8565b905081810360e08301526153db8185614a73565b90506153eb610100830184614d43565b9d9c50505050505050505050505050565b600060a0820190506154116000830188614eb5565b61541e6020830187614eda565b61542b60408301866148d6565b6154386060830185614c4a565b6154456080830184614d43565b9695505050505050565b600060e082019050615464600083018b614eb5565b615471602083018a614eda565b61547e60408301896148d6565b61548b6060830188614c4a565b6154986080830187614ef8565b6154a560a0830186614d70565b81810360c08301526154b88184866149fd565b90509998505050505050505050565b6000610100820190506154dd600083018c614eb5565b6154ea602083018b614eda565b6154f7604083018a6148d6565b6155046060830189614c4a565b6155116080830188614ef8565b61551e60a0830187614d70565b61552b60c0830186614d25565b81810360e083015261553e818486614c59565b90509a9950505050505050505050565b600060a0820190506155636000830188614eb5565b6155706020830187614eda565b61557d60408301866148d6565b61558a6060830185614c4a565b6155976080830184614f07565b9695505050505050565b60006080820190506155b66000830187614eb5565b6155c36020830186614eda565b6155d060408301856148d6565b6155dd6060830184614d43565b95945050505050565b60006020820190506155fb6000830184614ecb565b92915050565b600061560b61561c565b90506156178282615a70565b919050565b6000604051905090565b600067ffffffffffffffff82111561564157615640615ba2565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561566d5761566c615ba2565b5b61567682615bfe565b9050602081019050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050602082019050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061581b6020840184613dda565b905092915050565b600080833560016020038436030381126158405761583f615bf4565b5b83810192508235915060208301925067ffffffffffffffff82111561586857615867615bd1565b5b60018202360384131561587e5761587d615be0565b5b509250929050565b60006158956020840184613ecb565b905092915050565b60006158ac6020840184613f0a565b905092915050565b60006158c36020840184613f1f565b905092915050565b60006158d68261598b565b9050919050565b60006158e88261598b565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061593f82615da3565b919050565b600081905061595282615db7565b919050565b600081905061596582615dcb565b919050565b600081905061597882615ddf565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006159cd82615931565b9050919050565b60006159df82615944565b9050919050565b60006159f182615957565b9050919050565b6000615a038261596a565b9050919050565b6000615a15826159ab565b9050919050565b6000615a27826159b5565b9050919050565b82818337600083830152505050565b60005b83811015615a5b578082015181840152602081019050615a40565b83811115615a6a576000848401525b50505050565b615a7982615bfe565b810181811067ffffffffffffffff82111715615a9857615a97615ba2565b5b80604052505050565b6000615aac8261597d565b915061ffff821415615ac157615ac0615b15565b5b600182019050919050565b6000615ad7826159ab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615b0a57615b09615b15565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4d6f64756c6520616c72656164792064697361626c6564000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d6f64756c65206e6f7420617574686f72697a65640000000000000000000000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f4d6f64756c6520616c726561647920656e61626c656400000000000000000000600082015250565b7f496e76616c6964206d6f64756c65000000000000000000000000000000000000600082015250565b60048110615db457615db3615b44565b5b50565b60048110615dc857615dc7615b44565b5b50565b60028110615ddc57615ddb615b44565b5b50565b60038110615df057615def615b44565b5b50565b615dfc816158cb565b8114615e0757600080fd5b50565b615e13816158dd565b8114615e1e57600080fd5b50565b615e2a816158ef565b8114615e3557600080fd5b50565b615e4181615905565b8114615e4c57600080fd5b50565b60048110615e5c57600080fd5b50565b60048110615e6c57600080fd5b50565b60028110615e7c57600080fd5b50565b60038110615e8c57600080fd5b50565b615e988161597d565b8114615ea357600080fd5b50565b615eaf816159ab565b8114615eba57600080fd5b50565b615ec6816159b5565b8114615ed157600080fd5b5056fea26469706673582212201b02673520ea9284b2f57287bb54a9784eae9a7d7b2ce9eb5f58478be826f60064736f6c63430008060033", - "linkReferences": { - "contracts/Permissions.sol": { - "Permissions": [ - { - "length": 20, - "start": 5033 - }, - { - "length": 20, - "start": 5572 - }, - { - "length": 20, - "start": 5839 - }, - { - "length": 20, - "start": 6384 - }, - { - "length": 20, - "start": 6651 - }, - { - "length": 20, - "start": 6918 - }, - { - "length": 20, - "start": 7206 - }, - { - "length": 20, - "start": 7569 - }, - { - "length": 20, - "start": 8036 - }, - { - "length": 20, - "start": 8384 - }, - { - "length": 20, - "start": 8892 - }, - { - "length": 20, - "start": 10143 - }, - { - "length": 20, - "start": 11420 - }, - { - "length": 20, - "start": 12618 - } - ] - } - }, - "deployedLinkReferences": { - "contracts/Permissions.sol": { - "Permissions": [ - { - "length": 20, - "start": 2060 - }, - { - "length": 20, - "start": 2599 - }, - { - "length": 20, - "start": 2866 - }, - { - "length": 20, - "start": 3411 - }, - { - "length": 20, - "start": 3678 - }, - { - "length": 20, - "start": 3945 - }, - { - "length": 20, - "start": 4233 - }, - { - "length": 20, - "start": 4596 - }, - { - "length": 20, - "start": 5063 - }, - { - "length": 20, - "start": 5411 - }, - { - "length": 20, - "start": 5919 - }, - { - "length": 20, - "start": 7170 - }, - { - "length": 20, - "start": 8447 - }, - { - "length": 20, - "start": 9645 - } - ] - } - } -} diff --git a/packages/app/src/contracts/Tellor.json b/packages/app/src/contracts/Tellor.json deleted file mode 100644 index c7232cd9..00000000 --- a/packages/app/src/contracts/Tellor.json +++ /dev/null @@ -1,987 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TellorModule", - "sourceName": "contracts/TellorModule.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - }, - { - "internalType": "address", - "name": "_avatar", - "type": "address" - }, - { - "internalType": "address", - "name": "_target", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_tellorAddress", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_cooldown", - "type": "uint32" - }, - { - "internalType": "uint32", - "name": "_expiration", - "type": "uint32" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousAvatar", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newAvatar", - "type": "address" - } - ], - "name": "AvatarSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "guard", - "type": "address" - } - ], - "name": "ChangedGuard", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "queryId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "string", - "name": "proposalId", - "type": "string" - } - ], - "name": "ProposalAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousTarget", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newTarget", - "type": "address" - } - ], - "name": "TargetSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "initiator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "avatar", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "TellorModuleSetup", - "type": "event" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "INVALIDATED", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TRANSACTION_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - } - ], - "name": "addProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "avatar", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - } - ], - "name": "buildProposal", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "cooldown", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "_operation", - "type": "uint8" - } - ], - "name": "executeProposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "_operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_txIndex", - "type": "uint256" - } - ], - "name": "executeProposalWithIndex", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "executedProposalTransactions", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "getDataAfter", - "outputs": [ - { - "internalType": "bytes", - "name": "_value", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_timestampRetrieved", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "getDataBefore", - "outputs": [ - { - "internalType": "bytes", - "name": "_value", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_timestampRetrieved", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getGuard", - "outputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "getIndexForDataAfter", - "outputs": [ - { - "internalType": "bool", - "name": "_found", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "getIndexForDataBefore", - "outputs": [ - { - "internalType": "bool", - "name": "_found", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_maxAge", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_maxCount", - "type": "uint256" - } - ], - "name": "getMultipleValuesBefore", - "outputs": [ - { - "internalType": "bytes[]", - "name": "_values", - "type": "bytes[]" - }, - { - "internalType": "uint256[]", - "name": "_timestamps", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - } - ], - "name": "getNewValueCountbyQueryId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - } - ], - "name": "getQueryId", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "getReporterByTimestamp", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "getTimestampbyQueryIdandIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "enum Enum.Operation", - "name": "_operation", - "type": "uint8" - }, - { - "internalType": "uint256", - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "guard", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "idMappingContract", - "outputs": [ - { - "internalType": "contract IMappingContract", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "isInDispute", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_proposalId", - "type": "string" - }, - { - "internalType": "bytes32[]", - "name": "_txHashes", - "type": "bytes32[]" - } - ], - "name": "markProposalAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_proposalHash", - "type": "bytes32" - } - ], - "name": "markProposalAsInvalidByHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_proposalHash", - "type": "bytes32" - } - ], - "name": "markProposalWithExpiredResultAsInvalid", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "queryIds", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "resultExpiration", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_queryId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "retrieveData", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_avatar", - "type": "address" - } - ], - "name": "setAvatar", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_guard", - "type": "address" - } - ], - "name": "setGuard", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_addy", - "type": "address" - } - ], - "name": "setIdMappingContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_target", - "type": "address" - } - ], - "name": "setTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "_initParams", - "type": "bytes" - } - ], - "name": "setUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "target", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tellor", - "outputs": [ - { - "internalType": "contract ITellor", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_id", - "type": "bytes32" - } - ], - "name": "valueFor", - "outputs": [ - { - "internalType": "int256", - "name": "_value", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_statusCode", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620068ea380380620068ea833981810160405281019062000037919062000a15565b8280606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000868686868686604051602001620000999695949392919062000beb565b6040516020818303038152906040529050620000bb81620000c860201b60201c565b5050505050505062000fd8565b60008060008060008086806020019051810190620000e7919062000979565b955095509550955095509550606960149054906101000a900460ff161562000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013d9062000c9c565b60405180910390fd5b6001606960146101000a81548160ff021916908315150217905550620001716200044960201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620001e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001db9062000d02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562000257576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024e9062000c7a565b60405180910390fd5b60008163ffffffff161480620002815750603c828262000278919062000d35565b63ffffffff1610155b620002c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ba9062000cbe565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960156101000a81548163ffffffff021916908363ffffffff16021790555081606b60006101000a81548163ffffffff021916908363ffffffff160217905550620003d9866200054860201b60201c565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8cf089e89d710ad7a888a28dd8f52df5b7e0d21ef9001a76e4688b06f549391c8660405162000438919062000bce565b60405180910390a350505050505050565b600060019054906101000a900460ff168062000470575060008054906101000a900460ff16155b620004b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a99062000c9c565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000503576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620005136200065e60201b60201c565b620005236200073d60201b60201c565b8015620005455760008060016101000a81548160ff0219169083151502179055505b50565b620005586200083c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200057e6200084460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ce9062000ce0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006419062000c58565b60405180910390fd5b6200065b816200086e60201b60201c565b50565b600060019054906101000a900460ff168062000685575060008054906101000a900460ff16155b620006c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006be9062000c9c565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000718576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156200073a5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000764575060008054906101000a900460ff16155b620007a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200079d9062000c9c565b60405180910390fd5b60008060019054906101000a900460ff161590508015620007f7576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b620008176200080b6200083c60201b60201c565b6200086e60201b60201c565b8015620008395760008060016101000a81548160ff0219169083151502179055505b50565b600033905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620009458162000f8a565b92915050565b6000815190506200095c8162000fa4565b92915050565b600081519050620009738162000fbe565b92915050565b60008060008060008060c0878903121562000999576200099862000df7565b5b6000620009a989828a016200094b565b9650506020620009bc89828a016200094b565b9550506040620009cf89828a016200094b565b9450506060620009e289828a016200094b565b9350506080620009f589828a0162000962565b92505060a062000a0889828a0162000962565b9150509295509295509295565b60008060008060008060c0878903121562000a355762000a3462000df7565b5b600062000a4589828a0162000934565b965050602062000a5889828a0162000934565b955050604062000a6b89828a0162000934565b945050606062000a7e89828a016200094b565b935050608062000a9189828a0162000962565b92505060a062000aa489828a0162000962565b9150509295509295509295565b62000abc8162000d84565b82525050565b62000acd8162000d70565b82525050565b600062000ae260268362000d24565b915062000aef8262000dfc565b604082019050919050565b600062000b09601e8362000d24565b915062000b168262000e4b565b602082019050919050565b600062000b30602e8362000d24565b915062000b3d8262000e74565b604082019050919050565b600062000b5760448362000d24565b915062000b648262000ec3565b606082019050919050565b600062000b7e60208362000d24565b915062000b8b8262000f38565b602082019050919050565b600062000ba5601e8362000d24565b915062000bb28262000f61565b602082019050919050565b62000bc88162000db8565b82525050565b600060208201905062000be5600083018462000ac2565b92915050565b600060c08201905062000c02600083018962000ac2565b62000c11602083018862000ac2565b62000c20604083018762000ac2565b62000c2f606083018662000ab1565b62000c3e608083018562000bbd565b62000c4d60a083018462000bbd565b979650505050505050565b6000602082019050818103600083015262000c738162000ad3565b9050919050565b6000602082019050818103600083015262000c958162000afa565b9050919050565b6000602082019050818103600083015262000cb78162000b21565b9050919050565b6000602082019050818103600083015262000cd98162000b48565b9050919050565b6000602082019050818103600083015262000cfb8162000b6f565b9050919050565b6000602082019050818103600083015262000d1d8162000b96565b9050919050565b600082825260208201905092915050565b600062000d428262000db8565b915062000d4f8362000db8565b92508282101562000d655762000d6462000dc8565b5b828203905092915050565b600062000d7d8262000d98565b9050919050565b600062000d918262000d98565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f5468657265206e65656420746f206265206174206c656173742036307320626560008201527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208201527f74696f6e00000000000000000000000000000000000000000000000000000000604082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b62000f958162000d70565b811462000fa157600080fd5b50565b62000faf8162000d84565b811462000fbb57600080fd5b50565b62000fc98162000db8565b811462000fd557600080fd5b50565b6159028062000fe86000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c806377b03e0d11610146578063c9106389116100c3578063ea0b9c3a11610087578063ea0b9c3a1461074c578063f2fde38b1461077c578063f66f49c314610798578063f78eea83146107c9578063fcd4a546146107fb578063ff0394eb1461082c5761025e565b8063c910638914610694578063ce5e11bf146106b2578063d4b83992146106e2578063e07c548614610700578063e19a9dd9146107305761025e565b80638dcd26611161010a5780638dcd2661146105cb57806397722c20146105e7578063a4f9edbf14610617578063a792765f14610633578063c5958af9146106645761025e565b806377b03e0d14610523578063787a08a6146105535780637ceab3b11461057157806388633b7b1461058f5780638da5cb5b146105ad5761025e565b80632b500041116101df57806345c7980e116101a357806345c7980e146104625780634e1b83741461047e5780635aef7de6146104ae57806364ee3c6d146104cc578063715018a6146104fd578063776d1a01146105075761025e565b80632b5000411461039857806331460e3d146103c85780633408e470146103f85780633ea3c1461461041657806344e87f91146104325761025e565b806322617d971161022657806322617d97146102f35780632351a8771461030f578063276e832a1461032b57806329449085146103495780632af8aae01461037a5761025e565b8063086cfca81461026357806314604b8c1461027f578063193b505b1461029b5780631959ad5b146102b75780631db61b54146102d5575b600080fd5b61027d600480360381019061027891906136d7565b61084a565b005b61029960048036038101906102949190613c5d565b61098c565b005b6102b560048036038101906102b091906136d7565b610e0b565b005b6102bf610eaa565b6040516102cc9190614879565b60405180910390f35b6102dd610ed0565b6040516102ea91906146ec565b60405180910390f35b61030d60048036038101906103089190613931565b610ef7565b005b61032960048036038101906103249190613b7c565b61115d565b005b610333611175565b6040516103409190614c1b565b60405180910390f35b610363600480360381019061035e91906139cb565b61118b565b6040516103719291906146c3565b60405180910390f35b610382611245565b60405161038f919061485e565b60405180910390f35b6103b260048036038101906103ad91906137be565b61126b565b6040516103bf91906146ec565b60405180910390f35b6103e260048036038101906103dd9190613931565b61128c565b6040516103ef91906146ec565b60405180910390f35b6104006112a4565b60405161040d9190614c00565b60405180910390f35b610430600480360381019061042b9190613931565b6112b1565b005b61044c600480360381019061044791906139cb565b61136b565b60405161045991906146a8565b60405180910390f35b61047c60048036038101906104779190613b04565b611422565b005b6104986004803603810190610493919061398b565b61144b565b6040516104a591906146a8565b60405180910390f35b6104b661147a565b6040516104c3919061452f565b60405180910390f35b6104e660048036038101906104e191906139cb565b6114a0565b6040516104f492919061482e565b60405180910390f35b6105056114fa565b005b610521600480360381019061051c91906136d7565b611582565b005b61053d60048036038101906105389190613931565b6116c4565b60405161054a9190614c00565b60405180910390f35b61055b611778565b6040516105689190614c1b565b60405180910390f35b61057961178e565b604051610586919061452f565b60405180910390f35b6105976117b4565b6040516105a491906146ec565b60405180910390f35b6105b56117db565b6040516105c2919061452f565b60405180910390f35b6105e560048036038101906105e09190613b04565b611805565b005b61060160048036038101906105fc9190613b04565b6118e7565b60405161060e91906146ec565b60405180910390f35b610631600480360381019061062c9190613a72565b61196c565b005b61064d600480360381019061064891906139cb565b611cca565b60405161065b92919061482e565b60405180910390f35b61067e600480360381019061067991906139cb565b611d92565b60405161068b919061480c565b60405180910390f35b61069c611e4e565b6040516106a9919061452f565b60405180910390f35b6106cc60048036038101906106c791906139cb565b611e78565b6040516106d99190614c00565b60405180910390f35b6106ea611f2f565b6040516106f7919061452f565b60405180910390f35b61071a600480360381019061071591906139cb565b611f55565b604051610727919061452f565b60405180910390f35b61074a600480360381019061074591906136d7565b61200c565b005b61076660048036038101906107619190613b04565b612242565b60405161077391906148cb565b60405180910390f35b610796600480360381019061079191906136d7565b6122aa565b005b6107b260048036038101906107ad91906139cb565b6123a2565b6040516107c09291906146c3565b60405180910390f35b6107e360048036038101906107de9190613931565b612587565b6040516107f293929190614894565b60405180910390f35b61081560048036038101906108109190613a0b565b61269b565b604051610823929190614671565b60405180910390f35b610834612a6f565b60405161084191906146ec565b60405180910390f35b610852612a96565b73ffffffffffffffffffffffffffffffffffffffff166108706117db565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90614ac0565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006109988888612242565b8051906020012090506000606c60008381526020019081526020016000205490506000801b8114156109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690614b60565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90614b80565b60405180910390fd5b6000610a74888888888861126b565b905080898581518110610a8a57610a89615306565b5b602002602001015114610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990614be0565b60405180910390fd5b600080610adf8442611cca565b9150915060008111610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d906149a0565b60405180910390fd5b42606b60009054906101000a900463ffffffff1663ffffffff1682610b4b9190614df3565b10610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290614b40565b60405180910390fd5b600082806020019051810190610ba19190613855565b905080610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90614ba0565b60405180910390fd5b6000606960159054906101000a900463ffffffff16905060008163ffffffff161480610c205750428163ffffffff1684610c1d9190614df3565b10155b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690614a20565b60405180910390fd5b6000881480610cc25750606a600088815260200190815260200160002060008e60018b610c8c9190614f3c565b81518110610c9d57610c9c615306565b5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614960565b60405180910390fd5b606a6000888152602001908152602001600020600086815260200190815260200160002060009054906101000a900460ff1615610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90614b20565b60405180910390fd5b6001606a6000898152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550610dbc8c8c8c8c612a9e565b610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290614bc0565b60405180910390fd5b5050505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6657600080fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b6000606960159054906101000a900463ffffffff16905060008163ffffffff1611610f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4e906149c0565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906149e0565b60405180910390fd5b6000801b81141561101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290614b60565b60405180910390fd5b6000806110288342611cca565b915091506000811161106f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611066906149a0565b60405180910390fd5b6000828060200190518101906110859190613855565b9050806110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614ba0565b60405180910390fd5b428563ffffffff16836110da9190614df3565b1061111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190614aa0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c600088815260200190815260200160002081905550505050505050565b61116d868686868686600061098c565b505050505050565b606960159054906101000a900463ffffffff1681565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632944908585856040518363ffffffff1660e01b81526004016111eb929190614791565b604080518083038186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a91906138f1565b915091509250929050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061127a8686868686612d93565b80519060200120905095945050505050565b606c6020528060005260406000206000915090505481565b6000804690508091505090565b6112b9612a96565b73ffffffffffffffffffffffffffffffffffffffff166112d76117db565b73ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490614ac0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344e87f9184846040518363ffffffff1660e01b81526004016113ca929190614791565b60206040518083038186803b1580156113e257600080fd5b505afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190613855565b905092915050565b600061142e8383612242565b9050600081805190602001209050611445816112b1565b50505050565b606a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060006114b186866123a2565b91509150816114d857600060405180602001604052806000815250909350935050506114f3565b6114e28682611e78565b92506114ee8684611d92565b935050505b9250929050565b611502612a96565b73ffffffffffffffffffffffffffffffffffffffff166115206117db565b73ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90614ac0565b60405180910390fd5b6115806000612e8e565b565b61158a612a96565b73ffffffffffffffffffffffffffffffffffffffff166115a86117db565b73ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590614ac0565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377b03e0d836040518263ffffffff1660e01b815260040161172191906146ec565b60206040518083038186803b15801561173957600080fd5b505afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190613d53565b9050919050565b606b60009054906101000a900463ffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006118118383612242565b90506000818051906020012090506000801b606c60008381526020019081526020016000205414611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e90614a00565b60405180910390fd5b600061188385856118e7565b905080606c600084815260200190815260200160002081905550846040516118ab91906144e3565b6040518091039020817fd017d7c85eb4d3d4fc8c875e7d272062ad7dd797ccdb7b46b9c749a4e4864e3860405160405180910390a35050505050565b600080826040516020016118fb919061464f565b604051602081830303815290604052805190602001209050600084823060405160200161192a939291906148ed565b604051602081830303815290604052604051602001611949919061492b565b604051602081830303815290604052805190602001209050809250505092915050565b600080600080600080868060200190518101906119899190613731565b955095509550955095509550606960149054906101000a900460ff16156119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90614a60565b60405180910390fd5b6001606960146101000a81548160ff021916908315150217905550611a08612f54565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90614ae0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90614a40565b60405180910390fd5b60008163ffffffff161480611b0f5750603c8282611b069190614f70565b63ffffffff1610155b611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614a80565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960156101000a81548163ffffffff021916908363ffffffff16021790555081606b60006101000a81548163ffffffff021916908363ffffffff160217905550611c5c866122aa565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8cf089e89d710ad7a888a28dd8f52df5b7e0d21ef9001a76e4688b06f549391c86604051611cb9919061452f565b60405180910390a350505050505050565b60606000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a792765f85856040518363ffffffff1660e01b8152600401611d2b929190614791565b60006040518083038186803b158015611d4357600080fd5b505afa158015611d57573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d809190613882565b90915080925081935050509250929050565b6060606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5958af984846040518363ffffffff1660e01b8152600401611df1929190614791565b60006040518083038186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e469190613abb565b905092915050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce5e11bf84846040518363ffffffff1660e01b8152600401611ed7929190614791565b60206040518083038186803b158015611eef57600080fd5b505afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190613d53565b905092915050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e07c548684846040518363ffffffff1660e01b8152600401611fb4929190614791565b60206040518083038186803b158015611fcc57600080fd5b505afa158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120049190613704565b905092915050565b612014612a96565b73ffffffffffffffffffffffffffffffffffffffff166120326117db565b73ffffffffffffffffffffffffffffffffffffffff1614612088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207f90614ac0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121a5578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161211591906147f1565b60206040518083038186803b15801561212d57600080fd5b505afa158015612141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121659190613855565b6121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b90614b00565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612237919061452f565b60405180910390a150565b606060006122758360405160200161225a919061447e565b6040516020818303038152906040528051906020012061303d565b90508362e2909f60e81b82604051602001612292939291906144fa565b60405160208183030381529060405291505092915050565b6122b2612a96565b73ffffffffffffffffffffffffffffffffffffffff166122d06117db565b73ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614ac0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90614980565b60405180910390fd5b61239f81612e8e565b50565b60008060006123b0856116c4565b905060008114156123c8576000809250925050612580565b80806123d390615186565b915050600060019050600080600084905060006123f08a83611e78565b905088811161240b5760008097509750505050505050612580565b6124158a84611e78565b90508881111561242457600094505b5b84156124ec57600283836124399190614df3565b6124439190614e80565b935061244f8a85611e78565b9050888111156124995760006124718b60018761246c9190614f3c565b611e78565b90508981116124835760009550612493565b6001856124909190614f3c565b92505b506124e7565b60006124b18b6001876124ac9190614df3565b611e78565b9050898111156124d5576000955084806124ca906151e1565b9550508091506124e5565b6001856124e29190614df3565b93505b505b612425565b6124f68a8261136b565b61250c5760018497509750505050505050612580565b5b6125178a8261136b565b801561252257508584105b15612546578380612532906151e1565b94505061253f8a85611e78565b905061250d565b858414801561255b575061255a8a8261136b565b5b156125725760008097509750505050505050612580565b600184975097505050505050505b9250929050565b600080600080606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387a475fd866040518263ffffffff1660e01b81526004016125e891906146ec565b60206040518083038186803b15801561260057600080fd5b505afa158015612614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612638919061395e565b905060606126528260014261264d9190614df3565b611cca565b80955081925050506000841415612676576000806101949450945094505050612694565b6000612681826131b0565b9050809550858560c89550955095505050505b9193909250565b6060806000806126b68887896126b19190614f3c565b6123a2565b915091508161276357600067ffffffffffffffff8111156126da576126d9615335565b5b60405190808252806020026020018201604052801561270d57816020015b60608152602001906001900390816126f85790505b50600067ffffffffffffffff81111561272957612728615335565b5b6040519080825280602002602001820160405280156127575781602001602082028036833780820191505090505b50935093505050612a66565b600061276f898961118b565b80925081945050508261282157600067ffffffffffffffff81111561279757612796615335565b5b6040519080825280602002602001820160405280156127ca57816020015b60608152602001906001900390816127b55790505b50600067ffffffffffffffff8111156127e6576127e5615335565b5b6040519080825280602002602001820160405280156128145781602001602082028036833780820191505090505b5094509450505050612a66565b60008060008867ffffffffffffffff8111156128405761283f615335565b5b60405190808252806020026020018201604052801561286e5781602001602082028036833780820191505090505b5090505b88831080156128975750848260018661288b9190614df3565b6128959190614f3c565b115b156129065760006128b38d84876128ae9190614f3c565b611e78565b90506128bf8d8261136b565b6128f257808285815181106128d7576128d6615306565b5b60200260200101818152505083806128ee906151e1565b9450505b82806128fd906151e1565b93505050612872565b60008367ffffffffffffffff81111561292257612921615335565b5b60405190808252806020026020018201604052801561295557816020015b60608152602001906001900390816129405790505b50905060008467ffffffffffffffff81111561297457612973615335565b5b6040519080825280602002602001820160405280156129a25781602001602082028036833780820191505090505b50905060005b85811015612a565783816001886129bf9190614f3c565b6129c99190614f3c565b815181106129da576129d9615306565b5b60200260200101518282815181106129f5576129f4615306565b5b602002602001018181525050612a258f838381518110612a1857612a17615306565b5b6020026020010151611d92565b838281518110612a3857612a37615306565b5b60200260200101819052508080612a4e906151e1565b9150506129a8565b5081819950995050505050505050505b94509492505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b9d9b9a99989796959493929190614596565b600060405180830381600087803b158015612bb757600080fd5b505af1158015612bcb573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612c31949392919061454a565b602060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c839190613855565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8b57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612d58929190614768565b600060405180830381600087803b158015612d7257600080fd5b505af1158015612d86573d6000803e3d6000fd5b505050505b949350505050565b60606000612d9f6112a4565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001612ddb939291906147ba565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b898989805190602001208989604051602001612e3a96959493929190614707565b604051602081830303815290604052805190602001209050601960f81b600160f81b8383604051602001612e719493929190614495565b604051602081830303815290604052935050505095945050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612f7a575060008054906101000a900460ff16155b612fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb090614a60565b60405180910390fd5b60008060019054906101000a900460ff161590508015613009576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613011613218565b6130196132f1565b801561303a5760008060016101000a81548160ff0219169083151502179055505b50565b60606000604067ffffffffffffffff81111561305c5761305b615335565b5b6040519080825280601f01601f19166020018201604052801561308e5781602001600182028036833780820191505090505b50905060005b60208110156131a65760006008826130ac9190614ee2565b85901b60f81c905060006010826130c39190614eb1565b905060006010836130d49190615248565b90506130df826133da565b858560026130ed9190614ee2565b815181106130fe576130fd615306565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613136816133da565b8560018660026131469190614ee2565b6131509190614df3565b8151811061316157613160615306565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808061319e906151e1565b915050613094565b5080915050919050565b600080600090505b8251811015613212578281815181106131d4576131d3615306565b5b602001015160f81c60f81b60f81c60ff16610100836131f39190614ee2565b6131fd9190614df3565b9150808061320a906151e1565b9150506131b8565b50919050565b600060019054906101000a900460ff168061323e575060008054906101000a900460ff16155b61327d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327490614a60565b60405180910390fd5b60008060019054906101000a900460ff1615905080156132cd576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156132ee5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680613317575060008054906101000a900460ff16155b613356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334d90614a60565b60405180910390fd5b60008060019054906101000a900460ff1615905080156133a6576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6133b66133b1612a96565b612e8e565b80156133d75760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156133ff576030826133f59190614e49565b60f81b9050613412565b60578261340c9190614e49565b60f81b90505b919050565b600061342a61342584614c5b565b614c36565b9050808382526020820190508285602086028201111561344d5761344c615369565b5b60005b8581101561347d578161346388826135cf565b845260208401935060208301925050600181019050613450565b5050509392505050565b600061349a61349584614c87565b614c36565b9050828152602081018484840111156134b6576134b561536e565b5b6134c1848285615144565b509392505050565b60006134dc6134d784614c87565b614c36565b9050828152602081018484840111156134f8576134f761536e565b5b613503848285615153565b509392505050565b600061351e61351984614cb8565b614c36565b90508281526020810184848401111561353a5761353961536e565b5b613545848285615144565b509392505050565b60008135905061355c81615832565b92915050565b60008151905061357181615832565b92915050565b60008151905061358681615849565b92915050565b600082601f8301126135a1576135a0615364565b5b81356135b1848260208601613417565b91505092915050565b6000815190506135c981615860565b92915050565b6000813590506135de81615877565b92915050565b6000815190506135f381615877565b92915050565b600082601f83011261360e5761360d615364565b5b813561361e848260208601613487565b91505092915050565b600082601f83011261363c5761363b615364565b5b815161364c8482602086016134c9565b91505092915050565b6000813590506136648161588e565b92915050565b600082601f83011261367f5761367e615364565b5b813561368f84826020860161350b565b91505092915050565b6000813590506136a78161589e565b92915050565b6000815190506136bc8161589e565b92915050565b6000815190506136d1816158b5565b92915050565b6000602082840312156136ed576136ec615378565b5b60006136fb8482850161354d565b91505092915050565b60006020828403121561371a57613719615378565b5b600061372884828501613562565b91505092915050565b60008060008060008060c0878903121561374e5761374d615378565b5b600061375c89828a01613577565b965050602061376d89828a01613577565b955050604061377e89828a01613577565b945050606061378f89828a01613577565b93505060806137a089828a016136c2565b92505060a06137b189828a016136c2565b9150509295509295509295565b600080600080600060a086880312156137da576137d9615378565b5b60006137e88882890161354d565b95505060206137f988828901613698565b945050604086013567ffffffffffffffff81111561381a57613819615373565b5b613826888289016135f9565b935050606061383788828901613655565b925050608061384888828901613698565b9150509295509295909350565b60006020828403121561386b5761386a615378565b5b6000613879848285016135ba565b91505092915050565b60008060006060848603121561389b5761389a615378565b5b60006138a9868287016135ba565b935050602084015167ffffffffffffffff8111156138ca576138c9615373565b5b6138d686828701613627565b92505060406138e7868287016136ad565b9150509250925092565b6000806040838503121561390857613907615378565b5b6000613916858286016135ba565b9250506020613927858286016136ad565b9150509250929050565b60006020828403121561394757613946615378565b5b6000613955848285016135cf565b91505092915050565b60006020828403121561397457613973615378565b5b6000613982848285016135e4565b91505092915050565b600080604083850312156139a2576139a1615378565b5b60006139b0858286016135cf565b92505060206139c1858286016135cf565b9150509250929050565b600080604083850312156139e2576139e1615378565b5b60006139f0858286016135cf565b9250506020613a0185828601613698565b9150509250929050565b60008060008060808587031215613a2557613a24615378565b5b6000613a33878288016135cf565b9450506020613a4487828801613698565b9350506040613a5587828801613698565b9250506060613a6687828801613698565b91505092959194509250565b600060208284031215613a8857613a87615378565b5b600082013567ffffffffffffffff811115613aa657613aa5615373565b5b613ab2848285016135f9565b91505092915050565b600060208284031215613ad157613ad0615378565b5b600082015167ffffffffffffffff811115613aef57613aee615373565b5b613afb84828501613627565b91505092915050565b60008060408385031215613b1b57613b1a615378565b5b600083013567ffffffffffffffff811115613b3957613b38615373565b5b613b458582860161366a565b925050602083013567ffffffffffffffff811115613b6657613b65615373565b5b613b728582860161358c565b9150509250929050565b60008060008060008060c08789031215613b9957613b98615378565b5b600087013567ffffffffffffffff811115613bb757613bb6615373565b5b613bc389828a0161366a565b965050602087013567ffffffffffffffff811115613be457613be3615373565b5b613bf089828a0161358c565b9550506040613c0189828a0161354d565b9450506060613c1289828a01613698565b935050608087013567ffffffffffffffff811115613c3357613c32615373565b5b613c3f89828a016135f9565b92505060a0613c5089828a01613655565b9150509295509295509295565b600080600080600080600060e0888a031215613c7c57613c7b615378565b5b600088013567ffffffffffffffff811115613c9a57613c99615373565b5b613ca68a828b0161366a565b975050602088013567ffffffffffffffff811115613cc757613cc6615373565b5b613cd38a828b0161358c565b9650506040613ce48a828b0161354d565b9550506060613cf58a828b01613698565b945050608088013567ffffffffffffffff811115613d1657613d15615373565b5b613d228a828b016135f9565b93505060a0613d338a828b01613655565b92505060c0613d448a828b01613698565b91505092959891949750929550565b600060208284031215613d6957613d68615378565b5b6000613d77848285016136ad565b91505092915050565b6000613d8c8383613faf565b60208301905092915050565b6000613da48383613fcd565b60208301905092915050565b6000613dbc8383614019565b905092915050565b6000613dd08383614451565b60208301905092915050565b613de581614fb6565b82525050565b613df481614fa4565b82525050565b6000613e0582614d19565b613e0f8185614d77565b9350613e1a83614ce9565b8060005b83811015613e4b578151613e328882613d80565b9750613e3d83614d50565b925050600181019050613e1e565b5085935050505092915050565b6000613e6382614d19565b613e6d8185614d88565b9350613e7883614ce9565b8060005b83811015613ea9578151613e908882613d98565b9750613e9b83614d50565b925050600181019050613e7c565b5085935050505092915050565b6000613ec182614d24565b613ecb8185614d93565b935083602082028501613edd85614cf9565b8060005b85811015613f195784840389528151613efa8582613db0565b9450613f0583614d5d565b925060208a01995050600181019050613ee1565b50829750879550505050505092915050565b6000613f3682614d2f565b613f408185614da4565b9350613f4b83614d09565b8060005b83811015613f7c578151613f638882613dc4565b9750613f6e83614d6a565b925050600181019050613f4f565b5085935050505092915050565b613f9281614fc8565b82525050565b613fa9613fa482614fd4565b61522a565b82525050565b613fb88161502c565b82525050565b613fc78161502c565b82525050565b613fd68161502c565b82525050565b613fed613fe88261502c565b61523e565b82525050565b614004613fff82615000565b615234565b82525050565b61401381615036565b82525050565b600061402482614d3a565b61402e8185614db5565b935061403e818560208601615153565b6140478161537d565b840191505092915050565b600061405d82614d3a565b6140678185614dc6565b9350614077818560208601615153565b6140808161537d565b840191505092915050565b614094816150c6565b82525050565b6140a3816150d8565b82525050565b6140b2816150ea565b82525050565b6140c1816150fc565b82525050565b6140d081615075565b82525050565b6140df8161510e565b82525050565b60006140f082614d45565b6140fa8185614dd7565b935061410a818560208601615153565b6141138161537d565b840191505092915050565b600061412982614d45565b6141338185614de8565b9350614143818560208601615153565b80840191505092915050565b600061415c600883614dd7565b91506141678261538e565b602082019050919050565b600061417f602583614dd7565b915061418a826153b7565b604082019050919050565b60006141a2602683614dd7565b91506141ad82615406565b604082019050919050565b60006141c5601283614dd7565b91506141d082615455565b602082019050919050565b60006141e8601983614dd7565b91506141f38261547e565b602082019050919050565b600061420b601f83614dd7565b9150614216826154a7565b602082019050919050565b600061422e602383614dd7565b9150614239826154d0565b604082019050919050565b6000614251601283614dd7565b915061425c8261551f565b602082019050919050565b6000614274601e83614dd7565b915061427f82615548565b602082019050919050565b6000614297602e83614dd7565b91506142a282615571565b604082019050919050565b60006142ba604483614dd7565b91506142c5826155c0565b606082019050919050565b60006142dd601a83614dd7565b91506142e882615635565b602082019050919050565b6000614300602083614dd7565b915061430b8261565e565b602082019050919050565b6000614323601e83614dd7565b915061432e82615687565b602082019050919050565b6000614346602083614dd7565b9150614351826156b0565b602082019050919050565b6000614369602083614dd7565b9150614374826156d9565b602082019050919050565b600061438c601c83614dd7565b915061439782615702565b602082019050919050565b60006143af602583614dd7565b91506143ba8261572b565b604082019050919050565b60006143d2601d83614dd7565b91506143dd8261577a565b602082019050919050565b60006143f5601c83614dd7565b9150614400826157a3565b602082019050919050565b6000614418601983614dd7565b9150614423826157cc565b602082019050919050565b600061443b601b83614dd7565b9150614446826157f5565b602082019050919050565b61445a8161509f565b82525050565b6144698161509f565b82525050565b614478816150a9565b82525050565b600061448a8284613e58565b915081905092915050565b60006144a18287613f98565b6001820191506144b18286613f98565b6001820191506144c18285613fdc565b6020820191506144d18284613fdc565b60208201915081905095945050505050565b60006144ef828461411e565b915081905092915050565b6000614506828661411e565b91506145128285613ff3565b600382019150614522828461411e565b9150819050949350505050565b60006020820190506145446000830184613deb565b92915050565b600060808201905061455f6000830187613deb565b61456c6020830186614460565b818103604083015261457e8185614052565b905061458d60608301846140b8565b95945050505050565b6000610160820190506145ac600083018e613deb565b6145b9602083018d614460565b81810360408301526145cb818c614052565b90506145da606083018b6140b8565b6145e7608083018a6140d6565b6145f460a08301896140d6565b61460160c08301886140d6565b61460e60e0830187613deb565b61461c610100830186613ddc565b81810361012083015261462f8185614052565b905061463f610140830184613deb565b9c9b505050505050505050505050565b600060208201905081810360008301526146698184613dfa565b905092915050565b6000604082019050818103600083015261468b8185613eb6565b9050818103602083015261469f8184613f2b565b90509392505050565b60006020820190506146bd6000830184613f89565b92915050565b60006040820190506146d86000830185613f89565b6146e56020830184614460565b9392505050565b60006020820190506147016000830184613fbe565b92915050565b600060c08201905061471c6000830189613fbe565b6147296020830188613deb565b6147366040830187614460565b6147436060830186613fbe565b61475060808301856140b8565b61475d60a0830184614460565b979650505050505050565b600060408201905061477d6000830185613fbe565b61478a6020830184613f89565b9392505050565b60006040820190506147a66000830185613fbe565b6147b36020830184614460565b9392505050565b60006060820190506147cf6000830186613fbe565b6147dc6020830185614460565b6147e960408301846140a9565b949350505050565b6000602082019050614806600083018461400a565b92915050565b600060208201905081810360008301526148268184614052565b905092915050565b600060408201905081810360008301526148488185614052565b90506148576020830184614460565b9392505050565b6000602082019050614873600083018461408b565b92915050565b600060208201905061488e600083018461409a565b92915050565b60006060820190506148a960008301866140c7565b6148b66020830185614460565b6148c36040830184614460565b949350505050565b600060208201905081810360008301526148e581846140e5565b905092915050565b6000606082019050818103600083015261490781866140e5565b90506149166020830185613fbe565b6149236040830184613deb565b949350505050565b600060408201905081810360008301526149448161414f565b905081810360208301526149588184614052565b905092915050565b6000602082019050818103600083015261497981614172565b9050919050565b6000602082019050818103600083015261499981614195565b9050919050565b600060208201905081810360008301526149b9816141b8565b9050919050565b600060208201905081810360008301526149d9816141db565b9050919050565b600060208201905081810360008301526149f9816141fe565b9050919050565b60006020820190508181036000830152614a1981614221565b9050919050565b60006020820190508181036000830152614a3981614244565b9050919050565b60006020820190508181036000830152614a5981614267565b9050919050565b60006020820190508181036000830152614a798161428a565b9050919050565b60006020820190508181036000830152614a99816142ad565b9050919050565b60006020820190508181036000830152614ab9816142d0565b9050919050565b60006020820190508181036000830152614ad9816142f3565b9050919050565b60006020820190508181036000830152614af981614316565b9050919050565b60006020820190508181036000830152614b1981614339565b9050919050565b60006020820190508181036000830152614b398161435c565b9050919050565b60006020820190508181036000830152614b598161437f565b9050919050565b60006020820190508181036000830152614b79816143a2565b9050919050565b60006020820190508181036000830152614b99816143c5565b9050919050565b60006020820190508181036000830152614bb9816143e8565b9050919050565b60006020820190508181036000830152614bd98161440b565b9050919050565b60006020820190508181036000830152614bf98161442e565b9050919050565b6000602082019050614c156000830184614460565b92915050565b6000602082019050614c30600083018461446f565b92915050565b6000614c40614c51565b9050614c4c82826151b0565b919050565b6000604051905090565b600067ffffffffffffffff821115614c7657614c75615335565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614ca257614ca1615335565b5b614cab8261537d565b9050602081019050919050565b600067ffffffffffffffff821115614cd357614cd2615335565b5b614cdc8261537d565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614dfe8261509f565b9150614e098361509f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e3e57614e3d615279565b5b828201905092915050565b6000614e54826150b9565b9150614e5f836150b9565b92508260ff03821115614e7557614e74615279565b5b828201905092915050565b6000614e8b8261509f565b9150614e968361509f565b925082614ea657614ea56152a8565b5b828204905092915050565b6000614ebc826150b9565b9150614ec7836150b9565b925082614ed757614ed66152a8565b5b828204905092915050565b6000614eed8261509f565b9150614ef88361509f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f3157614f30615279565b5b828202905092915050565b6000614f478261509f565b9150614f528361509f565b925082821015614f6557614f64615279565b5b828203905092915050565b6000614f7b826150a9565b9150614f86836150a9565b925082821015614f9957614f98615279565b5b828203905092915050565b6000614faf8261507f565b9050919050565b6000614fc18261507f565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60008190506150708261581e565b919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006150d182615120565b9050919050565b60006150e382615120565b9050919050565b60006150f582615120565b9050919050565b600061510782615062565b9050919050565b60006151198261509f565b9050919050565b600061512b82615132565b9050919050565b600061513d8261507f565b9050919050565b82818337600083830152505050565b60005b83811015615171578082015181840152602081019050615156565b83811115615180576000848401525b50505050565b60006151918261509f565b915060008214156151a5576151a4615279565b5b600182039050919050565b6151b98261537d565b810181811067ffffffffffffffff821117156151d8576151d7615335565b5b80604052505050565b60006151ec8261509f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561521f5761521e615279565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000615253826150b9565b915061525e836150b9565b92508261526e5761526d6152a8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536e617073686f74000000000000000000000000000000000000000000000000600082015250565b7f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008201527f6420796574000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f44617461206e6f74207265747269657665640000000000000000000000000000600082015250565b7f526573756c7473206172652076616c696420666f726576657200000000000000600082015250565b7f50726f706f73616c20697320616c726561647920696e76616c69646174656400600082015250565b7f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f526573756c742068617320657870697265640000000000000000000000000000600082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f5468657265206e65656420746f206265206174206c656173742036307320626560008201527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208201527f74696f6e00000000000000000000000000000000000000000000000000000000604082015250565b7f526573756c7420686173206e6f74206578706972656420796574000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e600082015250565b7f5761697420666f72206164646974696f6e616c20636f6f6c646f776e00000000600082015250565b7f4e6f2071756572792069642073657420666f722070726f76696465642070726f60008201527f706f73616c000000000000000000000000000000000000000000000000000000602082015250565b7f50726f706f73616c20686173206265656e20696e76616c696461746564000000600082015250565b7f5472616e73616374696f6e20776173206e6f7420617070726f76656400000000600082015250565b7f4d6f64756c65207472616e73616374696f6e206661696c656400000000000000600082015250565b7f556e6578706563746564207472616e73616374696f6e20686173680000000000600082015250565b6002811061582f5761582e6152d7565b5b50565b61583b81614fa4565b811461584657600080fd5b50565b61585281614fb6565b811461585d57600080fd5b50565b61586981614fc8565b811461587457600080fd5b50565b6158808161502c565b811461588b57600080fd5b50565b6002811061589b57600080fd5b50565b6158a78161509f565b81146158b257600080fd5b50565b6158be816150a9565b81146158c957600080fd5b5056fea26469706673582212206892507425d626221bb2779913fc06776f187ccf218097bbdab0e89b8750900764736f6c63430008070033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061025e5760003560e01c806377b03e0d11610146578063c9106389116100c3578063ea0b9c3a11610087578063ea0b9c3a1461074c578063f2fde38b1461077c578063f66f49c314610798578063f78eea83146107c9578063fcd4a546146107fb578063ff0394eb1461082c5761025e565b8063c910638914610694578063ce5e11bf146106b2578063d4b83992146106e2578063e07c548614610700578063e19a9dd9146107305761025e565b80638dcd26611161010a5780638dcd2661146105cb57806397722c20146105e7578063a4f9edbf14610617578063a792765f14610633578063c5958af9146106645761025e565b806377b03e0d14610523578063787a08a6146105535780637ceab3b11461057157806388633b7b1461058f5780638da5cb5b146105ad5761025e565b80632b500041116101df57806345c7980e116101a357806345c7980e146104625780634e1b83741461047e5780635aef7de6146104ae57806364ee3c6d146104cc578063715018a6146104fd578063776d1a01146105075761025e565b80632b5000411461039857806331460e3d146103c85780633408e470146103f85780633ea3c1461461041657806344e87f91146104325761025e565b806322617d971161022657806322617d97146102f35780632351a8771461030f578063276e832a1461032b57806329449085146103495780632af8aae01461037a5761025e565b8063086cfca81461026357806314604b8c1461027f578063193b505b1461029b5780631959ad5b146102b75780631db61b54146102d5575b600080fd5b61027d600480360381019061027891906136d7565b61084a565b005b61029960048036038101906102949190613c5d565b61098c565b005b6102b560048036038101906102b091906136d7565b610e0b565b005b6102bf610eaa565b6040516102cc9190614879565b60405180910390f35b6102dd610ed0565b6040516102ea91906146ec565b60405180910390f35b61030d60048036038101906103089190613931565b610ef7565b005b61032960048036038101906103249190613b7c565b61115d565b005b610333611175565b6040516103409190614c1b565b60405180910390f35b610363600480360381019061035e91906139cb565b61118b565b6040516103719291906146c3565b60405180910390f35b610382611245565b60405161038f919061485e565b60405180910390f35b6103b260048036038101906103ad91906137be565b61126b565b6040516103bf91906146ec565b60405180910390f35b6103e260048036038101906103dd9190613931565b61128c565b6040516103ef91906146ec565b60405180910390f35b6104006112a4565b60405161040d9190614c00565b60405180910390f35b610430600480360381019061042b9190613931565b6112b1565b005b61044c600480360381019061044791906139cb565b61136b565b60405161045991906146a8565b60405180910390f35b61047c60048036038101906104779190613b04565b611422565b005b6104986004803603810190610493919061398b565b61144b565b6040516104a591906146a8565b60405180910390f35b6104b661147a565b6040516104c3919061452f565b60405180910390f35b6104e660048036038101906104e191906139cb565b6114a0565b6040516104f492919061482e565b60405180910390f35b6105056114fa565b005b610521600480360381019061051c91906136d7565b611582565b005b61053d60048036038101906105389190613931565b6116c4565b60405161054a9190614c00565b60405180910390f35b61055b611778565b6040516105689190614c1b565b60405180910390f35b61057961178e565b604051610586919061452f565b60405180910390f35b6105976117b4565b6040516105a491906146ec565b60405180910390f35b6105b56117db565b6040516105c2919061452f565b60405180910390f35b6105e560048036038101906105e09190613b04565b611805565b005b61060160048036038101906105fc9190613b04565b6118e7565b60405161060e91906146ec565b60405180910390f35b610631600480360381019061062c9190613a72565b61196c565b005b61064d600480360381019061064891906139cb565b611cca565b60405161065b92919061482e565b60405180910390f35b61067e600480360381019061067991906139cb565b611d92565b60405161068b919061480c565b60405180910390f35b61069c611e4e565b6040516106a9919061452f565b60405180910390f35b6106cc60048036038101906106c791906139cb565b611e78565b6040516106d99190614c00565b60405180910390f35b6106ea611f2f565b6040516106f7919061452f565b60405180910390f35b61071a600480360381019061071591906139cb565b611f55565b604051610727919061452f565b60405180910390f35b61074a600480360381019061074591906136d7565b61200c565b005b61076660048036038101906107619190613b04565b612242565b60405161077391906148cb565b60405180910390f35b610796600480360381019061079191906136d7565b6122aa565b005b6107b260048036038101906107ad91906139cb565b6123a2565b6040516107c09291906146c3565b60405180910390f35b6107e360048036038101906107de9190613931565b612587565b6040516107f293929190614894565b60405180910390f35b61081560048036038101906108109190613a0b565b61269b565b604051610823929190614671565b60405180910390f35b610834612a6f565b60405161084191906146ec565b60405180910390f35b610852612a96565b73ffffffffffffffffffffffffffffffffffffffff166108706117db565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90614ac0565b60405180910390fd5b6000606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f52ae88b092de36f87fb43fe794eb1381023b9c1bce563a871154022c63dce34260405160405180910390a35050565b60006109988888612242565b8051906020012090506000606c60008381526020019081526020016000205490506000801b8114156109ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690614b60565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5c90614b80565b60405180910390fd5b6000610a74888888888861126b565b905080898581518110610a8a57610a89615306565b5b602002602001015114610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990614be0565b60405180910390fd5b600080610adf8442611cca565b9150915060008111610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d906149a0565b60405180910390fd5b42606b60009054906101000a900463ffffffff1663ffffffff1682610b4b9190614df3565b10610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290614b40565b60405180910390fd5b600082806020019051810190610ba19190613855565b905080610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90614ba0565b60405180910390fd5b6000606960159054906101000a900463ffffffff16905060008163ffffffff161480610c205750428163ffffffff1684610c1d9190614df3565b10155b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690614a20565b60405180910390fd5b6000881480610cc25750606a600088815260200190815260200160002060008e60018b610c8c9190614f3c565b81518110610c9d57610c9c615306565b5b6020026020010151815260200190815260200160002060009054906101000a900460ff165b610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614960565b60405180910390fd5b606a6000888152602001908152602001600020600086815260200190815260200160002060009054906101000a900460ff1615610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90614b20565b60405180910390fd5b6001606a6000898152602001908152602001600020600087815260200190815260200160002060006101000a81548160ff021916908315150217905550610dbc8c8c8c8c612a9e565b610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290614bc0565b60405180910390fd5b5050505050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff16606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6657600080fd5b80606960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b81565b6000606960159054906101000a900463ffffffff16905060008163ffffffff1611610f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4e906149c0565b60405180910390fd5b6000606c60008481526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b811415610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc906149e0565b60405180910390fd5b6000801b81141561101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290614b60565b60405180910390fd5b6000806110288342611cca565b915091506000811161106f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611066906149a0565b60405180910390fd5b6000828060200190518101906110859190613855565b9050806110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90614ba0565b60405180910390fd5b428563ffffffff16836110da9190614df3565b1061111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190614aa0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c600088815260200190815260200160002081905550505050505050565b61116d868686868686600061098c565b505050505050565b606960159054906101000a900463ffffffff1681565b600080606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632944908585856040518363ffffffff1660e01b81526004016111eb929190614791565b604080518083038186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a91906138f1565b915091509250929050565b606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061127a8686868686612d93565b80519060200120905095945050505050565b606c6020528060005260406000206000915090505481565b6000804690508091505090565b6112b9612a96565b73ffffffffffffffffffffffffffffffffffffffff166112d76117db565b73ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490614ac0565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b606c60008381526020019081526020016000208190555050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166344e87f9184846040518363ffffffff1660e01b81526004016113ca929190614791565b60206040518083038186803b1580156113e257600080fd5b505afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190613855565b905092915050565b600061142e8383612242565b9050600081805190602001209050611445816112b1565b50505050565b606a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b606660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060006114b186866123a2565b91509150816114d857600060405180602001604052806000815250909350935050506114f3565b6114e28682611e78565b92506114ee8684611d92565b935050505b9250929050565b611502612a96565b73ffffffffffffffffffffffffffffffffffffffff166115206117db565b73ffffffffffffffffffffffffffffffffffffffff1614611576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156d90614ac0565b60405180910390fd5b6115806000612e8e565b565b61158a612a96565b73ffffffffffffffffffffffffffffffffffffffff166115a86117db565b73ffffffffffffffffffffffffffffffffffffffff16146115fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f590614ac0565b60405180910390fd5b6000606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90cc2f570a6eb594b1580ea3e41247d2d73a55281889e86bd4ec2fc29c7e62d660405160405180910390a35050565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377b03e0d836040518263ffffffff1660e01b815260040161172191906146ec565b60206040518083038186803b15801561173957600080fd5b505afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117719190613d53565b9050919050565b606b60009054906101000a900463ffffffff1681565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b81565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006118118383612242565b90506000818051906020012090506000801b606c60008381526020019081526020016000205414611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e90614a00565b60405180910390fd5b600061188385856118e7565b905080606c600084815260200190815260200160002081905550846040516118ab91906144e3565b6040518091039020817fd017d7c85eb4d3d4fc8c875e7d272062ad7dd797ccdb7b46b9c749a4e4864e3860405160405180910390a35050505050565b600080826040516020016118fb919061464f565b604051602081830303815290604052805190602001209050600084823060405160200161192a939291906148ed565b604051602081830303815290604052604051602001611949919061492b565b604051602081830303815290604052805190602001209050809250505092915050565b600080600080600080868060200190518101906119899190613731565b955095509550955095509550606960149054906101000a900460ff16156119e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dc90614a60565b60405180910390fd5b6001606960146101000a81548160ff021916908315150217905550611a08612f54565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f90614ae0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adf90614a40565b60405180910390fd5b60008163ffffffff161480611b0f5750603c8282611b069190614f70565b63ffffffff1610155b611b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4590614a80565b60405180910390fd5b84606660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083606760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082606860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080606960156101000a81548163ffffffff021916908363ffffffff16021790555081606b60006101000a81548163ffffffff021916908363ffffffff160217905550611c5c866122aa565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8cf089e89d710ad7a888a28dd8f52df5b7e0d21ef9001a76e4688b06f549391c86604051611cb9919061452f565b60405180910390a350505050505050565b60606000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a792765f85856040518363ffffffff1660e01b8152600401611d2b929190614791565b60006040518083038186803b158015611d4357600080fd5b505afa158015611d57573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611d809190613882565b90915080925081935050509250929050565b6060606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5958af984846040518363ffffffff1660e01b8152600401611df1929190614791565b60006040518083038186803b158015611e0957600080fd5b505afa158015611e1d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e469190613abb565b905092915050565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce5e11bf84846040518363ffffffff1660e01b8152600401611ed7929190614791565b60206040518083038186803b158015611eef57600080fd5b505afa158015611f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f279190613d53565b905092915050565b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000606860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e07c548684846040518363ffffffff1660e01b8152600401611fb4929190614791565b60206040518083038186803b158015611fcc57600080fd5b505afa158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120049190613704565b905092915050565b612014612a96565b73ffffffffffffffffffffffffffffffffffffffff166120326117db565b73ffffffffffffffffffffffffffffffffffffffff1614612088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207f90614ac0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121a5578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161211591906147f1565b60206040518083038186803b15801561212d57600080fd5b505afa158015612141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121659190613855565b6121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219b90614b00565b60405180910390fd5b5b80606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa2606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051612237919061452f565b60405180910390a150565b606060006122758360405160200161225a919061447e565b6040516020818303038152906040528051906020012061303d565b90508362e2909f60e81b82604051602001612292939291906144fa565b60405160208183030381529060405291505092915050565b6122b2612a96565b73ffffffffffffffffffffffffffffffffffffffff166122d06117db565b73ffffffffffffffffffffffffffffffffffffffff1614612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614ac0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238d90614980565b60405180910390fd5b61239f81612e8e565b50565b60008060006123b0856116c4565b905060008114156123c8576000809250925050612580565b80806123d390615186565b915050600060019050600080600084905060006123f08a83611e78565b905088811161240b5760008097509750505050505050612580565b6124158a84611e78565b90508881111561242457600094505b5b84156124ec57600283836124399190614df3565b6124439190614e80565b935061244f8a85611e78565b9050888111156124995760006124718b60018761246c9190614f3c565b611e78565b90508981116124835760009550612493565b6001856124909190614f3c565b92505b506124e7565b60006124b18b6001876124ac9190614df3565b611e78565b9050898111156124d5576000955084806124ca906151e1565b9550508091506124e5565b6001856124e29190614df3565b93505b505b612425565b6124f68a8261136b565b61250c5760018497509750505050505050612580565b5b6125178a8261136b565b801561252257508584105b15612546578380612532906151e1565b94505061253f8a85611e78565b905061250d565b858414801561255b575061255a8a8261136b565b5b156125725760008097509750505050505050612580565b600184975097505050505050505b9250929050565b600080600080606960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166387a475fd866040518263ffffffff1660e01b81526004016125e891906146ec565b60206040518083038186803b15801561260057600080fd5b505afa158015612614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612638919061395e565b905060606126528260014261264d9190614df3565b611cca565b80955081925050506000841415612676576000806101949450945094505050612694565b6000612681826131b0565b9050809550858560c89550955095505050505b9193909250565b6060806000806126b68887896126b19190614f3c565b6123a2565b915091508161276357600067ffffffffffffffff8111156126da576126d9615335565b5b60405190808252806020026020018201604052801561270d57816020015b60608152602001906001900390816126f85790505b50600067ffffffffffffffff81111561272957612728615335565b5b6040519080825280602002602001820160405280156127575781602001602082028036833780820191505090505b50935093505050612a66565b600061276f898961118b565b80925081945050508261282157600067ffffffffffffffff81111561279757612796615335565b5b6040519080825280602002602001820160405280156127ca57816020015b60608152602001906001900390816127b55790505b50600067ffffffffffffffff8111156127e6576127e5615335565b5b6040519080825280602002602001820160405280156128145781602001602082028036833780820191505090505b5094509450505050612a66565b60008060008867ffffffffffffffff8111156128405761283f615335565b5b60405190808252806020026020018201604052801561286e5781602001602082028036833780820191505090505b5090505b88831080156128975750848260018661288b9190614df3565b6128959190614f3c565b115b156129065760006128b38d84876128ae9190614f3c565b611e78565b90506128bf8d8261136b565b6128f257808285815181106128d7576128d6615306565b5b60200260200101818152505083806128ee906151e1565b9450505b82806128fd906151e1565b93505050612872565b60008367ffffffffffffffff81111561292257612921615335565b5b60405190808252806020026020018201604052801561295557816020015b60608152602001906001900390816129405790505b50905060008467ffffffffffffffff81111561297457612973615335565b5b6040519080825280602002602001820160405280156129a25781602001602082028036833780820191505090505b50905060005b85811015612a565783816001886129bf9190614f3c565b6129c99190614f3c565b815181106129da576129d9615306565b5b60200260200101518282815181106129f5576129f4615306565b5b602002602001018181525050612a258f838381518110612a1857612a17615306565b5b6020026020010151611d92565b838281518110612a3857612a37615306565b5b60200260200101819052508080612a4e906151e1565b9150506129a8565b5081819950995050505050505050505b94509492505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b81565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd057606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375f0bb528686868660008060008060006040518060400160405280600281526020017f307800000000000000000000000000000000000000000000000000000000000081525060006040518c63ffffffff1660e01b8152600401612b9d9b9a99989796959493929190614596565b600060405180830381600087803b158015612bb757600080fd5b505af1158015612bcb573d6000803e3d6000fd5b505050505b606760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7868686866040518563ffffffff1660e01b8152600401612c31949392919061454a565b602060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c839190613855565b9050600073ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8b57606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663932713687f3078000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612d58929190614768565b600060405180830381600087803b158015612d7257600080fd5b505af1158015612d86573d6000803e3d6000fd5b505050505b949350505050565b60606000612d9f6112a4565b905060007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b8230604051602001612ddb939291906147ba565b60405160208183030381529060405280519060200120905060007f72e9670a7ee00f5fbf1049b8c38e3f22fab7e9b85029e85cf9412f17fdd5c2ad60001b898989805190602001208989604051602001612e3a96959493929190614707565b604051602081830303815290604052805190602001209050601960f81b600160f81b8383604051602001612e719493929190614495565b604051602081830303815290604052935050505095945050505050565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060019054906101000a900460ff1680612f7a575060008054906101000a900460ff16155b612fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb090614a60565b60405180910390fd5b60008060019054906101000a900460ff161590508015613009576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b613011613218565b6130196132f1565b801561303a5760008060016101000a81548160ff0219169083151502179055505b50565b60606000604067ffffffffffffffff81111561305c5761305b615335565b5b6040519080825280601f01601f19166020018201604052801561308e5781602001600182028036833780820191505090505b50905060005b60208110156131a65760006008826130ac9190614ee2565b85901b60f81c905060006010826130c39190614eb1565b905060006010836130d49190615248565b90506130df826133da565b858560026130ed9190614ee2565b815181106130fe576130fd615306565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613136816133da565b8560018660026131469190614ee2565b6131509190614df3565b8151811061316157613160615306565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350505050808061319e906151e1565b915050613094565b5080915050919050565b600080600090505b8251811015613212578281815181106131d4576131d3615306565b5b602001015160f81c60f81b60f81c60ff16610100836131f39190614ee2565b6131fd9190614df3565b9150808061320a906151e1565b9150506131b8565b50919050565b600060019054906101000a900460ff168061323e575060008054906101000a900460ff16155b61327d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327490614a60565b60405180910390fd5b60008060019054906101000a900460ff1615905080156132cd576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156132ee5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680613317575060008054906101000a900460ff16155b613356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334d90614a60565b60405180910390fd5b60008060019054906101000a900460ff1615905080156133a6576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6133b66133b1612a96565b612e8e565b80156133d75760008060016101000a81548160ff0219169083151502179055505b50565b6000600a8260ff1610156133ff576030826133f59190614e49565b60f81b9050613412565b60578261340c9190614e49565b60f81b90505b919050565b600061342a61342584614c5b565b614c36565b9050808382526020820190508285602086028201111561344d5761344c615369565b5b60005b8581101561347d578161346388826135cf565b845260208401935060208301925050600181019050613450565b5050509392505050565b600061349a61349584614c87565b614c36565b9050828152602081018484840111156134b6576134b561536e565b5b6134c1848285615144565b509392505050565b60006134dc6134d784614c87565b614c36565b9050828152602081018484840111156134f8576134f761536e565b5b613503848285615153565b509392505050565b600061351e61351984614cb8565b614c36565b90508281526020810184848401111561353a5761353961536e565b5b613545848285615144565b509392505050565b60008135905061355c81615832565b92915050565b60008151905061357181615832565b92915050565b60008151905061358681615849565b92915050565b600082601f8301126135a1576135a0615364565b5b81356135b1848260208601613417565b91505092915050565b6000815190506135c981615860565b92915050565b6000813590506135de81615877565b92915050565b6000815190506135f381615877565b92915050565b600082601f83011261360e5761360d615364565b5b813561361e848260208601613487565b91505092915050565b600082601f83011261363c5761363b615364565b5b815161364c8482602086016134c9565b91505092915050565b6000813590506136648161588e565b92915050565b600082601f83011261367f5761367e615364565b5b813561368f84826020860161350b565b91505092915050565b6000813590506136a78161589e565b92915050565b6000815190506136bc8161589e565b92915050565b6000815190506136d1816158b5565b92915050565b6000602082840312156136ed576136ec615378565b5b60006136fb8482850161354d565b91505092915050565b60006020828403121561371a57613719615378565b5b600061372884828501613562565b91505092915050565b60008060008060008060c0878903121561374e5761374d615378565b5b600061375c89828a01613577565b965050602061376d89828a01613577565b955050604061377e89828a01613577565b945050606061378f89828a01613577565b93505060806137a089828a016136c2565b92505060a06137b189828a016136c2565b9150509295509295509295565b600080600080600060a086880312156137da576137d9615378565b5b60006137e88882890161354d565b95505060206137f988828901613698565b945050604086013567ffffffffffffffff81111561381a57613819615373565b5b613826888289016135f9565b935050606061383788828901613655565b925050608061384888828901613698565b9150509295509295909350565b60006020828403121561386b5761386a615378565b5b6000613879848285016135ba565b91505092915050565b60008060006060848603121561389b5761389a615378565b5b60006138a9868287016135ba565b935050602084015167ffffffffffffffff8111156138ca576138c9615373565b5b6138d686828701613627565b92505060406138e7868287016136ad565b9150509250925092565b6000806040838503121561390857613907615378565b5b6000613916858286016135ba565b9250506020613927858286016136ad565b9150509250929050565b60006020828403121561394757613946615378565b5b6000613955848285016135cf565b91505092915050565b60006020828403121561397457613973615378565b5b6000613982848285016135e4565b91505092915050565b600080604083850312156139a2576139a1615378565b5b60006139b0858286016135cf565b92505060206139c1858286016135cf565b9150509250929050565b600080604083850312156139e2576139e1615378565b5b60006139f0858286016135cf565b9250506020613a0185828601613698565b9150509250929050565b60008060008060808587031215613a2557613a24615378565b5b6000613a33878288016135cf565b9450506020613a4487828801613698565b9350506040613a5587828801613698565b9250506060613a6687828801613698565b91505092959194509250565b600060208284031215613a8857613a87615378565b5b600082013567ffffffffffffffff811115613aa657613aa5615373565b5b613ab2848285016135f9565b91505092915050565b600060208284031215613ad157613ad0615378565b5b600082015167ffffffffffffffff811115613aef57613aee615373565b5b613afb84828501613627565b91505092915050565b60008060408385031215613b1b57613b1a615378565b5b600083013567ffffffffffffffff811115613b3957613b38615373565b5b613b458582860161366a565b925050602083013567ffffffffffffffff811115613b6657613b65615373565b5b613b728582860161358c565b9150509250929050565b60008060008060008060c08789031215613b9957613b98615378565b5b600087013567ffffffffffffffff811115613bb757613bb6615373565b5b613bc389828a0161366a565b965050602087013567ffffffffffffffff811115613be457613be3615373565b5b613bf089828a0161358c565b9550506040613c0189828a0161354d565b9450506060613c1289828a01613698565b935050608087013567ffffffffffffffff811115613c3357613c32615373565b5b613c3f89828a016135f9565b92505060a0613c5089828a01613655565b9150509295509295509295565b600080600080600080600060e0888a031215613c7c57613c7b615378565b5b600088013567ffffffffffffffff811115613c9a57613c99615373565b5b613ca68a828b0161366a565b975050602088013567ffffffffffffffff811115613cc757613cc6615373565b5b613cd38a828b0161358c565b9650506040613ce48a828b0161354d565b9550506060613cf58a828b01613698565b945050608088013567ffffffffffffffff811115613d1657613d15615373565b5b613d228a828b016135f9565b93505060a0613d338a828b01613655565b92505060c0613d448a828b01613698565b91505092959891949750929550565b600060208284031215613d6957613d68615378565b5b6000613d77848285016136ad565b91505092915050565b6000613d8c8383613faf565b60208301905092915050565b6000613da48383613fcd565b60208301905092915050565b6000613dbc8383614019565b905092915050565b6000613dd08383614451565b60208301905092915050565b613de581614fb6565b82525050565b613df481614fa4565b82525050565b6000613e0582614d19565b613e0f8185614d77565b9350613e1a83614ce9565b8060005b83811015613e4b578151613e328882613d80565b9750613e3d83614d50565b925050600181019050613e1e565b5085935050505092915050565b6000613e6382614d19565b613e6d8185614d88565b9350613e7883614ce9565b8060005b83811015613ea9578151613e908882613d98565b9750613e9b83614d50565b925050600181019050613e7c565b5085935050505092915050565b6000613ec182614d24565b613ecb8185614d93565b935083602082028501613edd85614cf9565b8060005b85811015613f195784840389528151613efa8582613db0565b9450613f0583614d5d565b925060208a01995050600181019050613ee1565b50829750879550505050505092915050565b6000613f3682614d2f565b613f408185614da4565b9350613f4b83614d09565b8060005b83811015613f7c578151613f638882613dc4565b9750613f6e83614d6a565b925050600181019050613f4f565b5085935050505092915050565b613f9281614fc8565b82525050565b613fa9613fa482614fd4565b61522a565b82525050565b613fb88161502c565b82525050565b613fc78161502c565b82525050565b613fd68161502c565b82525050565b613fed613fe88261502c565b61523e565b82525050565b614004613fff82615000565b615234565b82525050565b61401381615036565b82525050565b600061402482614d3a565b61402e8185614db5565b935061403e818560208601615153565b6140478161537d565b840191505092915050565b600061405d82614d3a565b6140678185614dc6565b9350614077818560208601615153565b6140808161537d565b840191505092915050565b614094816150c6565b82525050565b6140a3816150d8565b82525050565b6140b2816150ea565b82525050565b6140c1816150fc565b82525050565b6140d081615075565b82525050565b6140df8161510e565b82525050565b60006140f082614d45565b6140fa8185614dd7565b935061410a818560208601615153565b6141138161537d565b840191505092915050565b600061412982614d45565b6141338185614de8565b9350614143818560208601615153565b80840191505092915050565b600061415c600883614dd7565b91506141678261538e565b602082019050919050565b600061417f602583614dd7565b915061418a826153b7565b604082019050919050565b60006141a2602683614dd7565b91506141ad82615406565b604082019050919050565b60006141c5601283614dd7565b91506141d082615455565b602082019050919050565b60006141e8601983614dd7565b91506141f38261547e565b602082019050919050565b600061420b601f83614dd7565b9150614216826154a7565b602082019050919050565b600061422e602383614dd7565b9150614239826154d0565b604082019050919050565b6000614251601283614dd7565b915061425c8261551f565b602082019050919050565b6000614274601e83614dd7565b915061427f82615548565b602082019050919050565b6000614297602e83614dd7565b91506142a282615571565b604082019050919050565b60006142ba604483614dd7565b91506142c5826155c0565b606082019050919050565b60006142dd601a83614dd7565b91506142e882615635565b602082019050919050565b6000614300602083614dd7565b915061430b8261565e565b602082019050919050565b6000614323601e83614dd7565b915061432e82615687565b602082019050919050565b6000614346602083614dd7565b9150614351826156b0565b602082019050919050565b6000614369602083614dd7565b9150614374826156d9565b602082019050919050565b600061438c601c83614dd7565b915061439782615702565b602082019050919050565b60006143af602583614dd7565b91506143ba8261572b565b604082019050919050565b60006143d2601d83614dd7565b91506143dd8261577a565b602082019050919050565b60006143f5601c83614dd7565b9150614400826157a3565b602082019050919050565b6000614418601983614dd7565b9150614423826157cc565b602082019050919050565b600061443b601b83614dd7565b9150614446826157f5565b602082019050919050565b61445a8161509f565b82525050565b6144698161509f565b82525050565b614478816150a9565b82525050565b600061448a8284613e58565b915081905092915050565b60006144a18287613f98565b6001820191506144b18286613f98565b6001820191506144c18285613fdc565b6020820191506144d18284613fdc565b60208201915081905095945050505050565b60006144ef828461411e565b915081905092915050565b6000614506828661411e565b91506145128285613ff3565b600382019150614522828461411e565b9150819050949350505050565b60006020820190506145446000830184613deb565b92915050565b600060808201905061455f6000830187613deb565b61456c6020830186614460565b818103604083015261457e8185614052565b905061458d60608301846140b8565b95945050505050565b6000610160820190506145ac600083018e613deb565b6145b9602083018d614460565b81810360408301526145cb818c614052565b90506145da606083018b6140b8565b6145e7608083018a6140d6565b6145f460a08301896140d6565b61460160c08301886140d6565b61460e60e0830187613deb565b61461c610100830186613ddc565b81810361012083015261462f8185614052565b905061463f610140830184613deb565b9c9b505050505050505050505050565b600060208201905081810360008301526146698184613dfa565b905092915050565b6000604082019050818103600083015261468b8185613eb6565b9050818103602083015261469f8184613f2b565b90509392505050565b60006020820190506146bd6000830184613f89565b92915050565b60006040820190506146d86000830185613f89565b6146e56020830184614460565b9392505050565b60006020820190506147016000830184613fbe565b92915050565b600060c08201905061471c6000830189613fbe565b6147296020830188613deb565b6147366040830187614460565b6147436060830186613fbe565b61475060808301856140b8565b61475d60a0830184614460565b979650505050505050565b600060408201905061477d6000830185613fbe565b61478a6020830184613f89565b9392505050565b60006040820190506147a66000830185613fbe565b6147b36020830184614460565b9392505050565b60006060820190506147cf6000830186613fbe565b6147dc6020830185614460565b6147e960408301846140a9565b949350505050565b6000602082019050614806600083018461400a565b92915050565b600060208201905081810360008301526148268184614052565b905092915050565b600060408201905081810360008301526148488185614052565b90506148576020830184614460565b9392505050565b6000602082019050614873600083018461408b565b92915050565b600060208201905061488e600083018461409a565b92915050565b60006060820190506148a960008301866140c7565b6148b66020830185614460565b6148c36040830184614460565b949350505050565b600060208201905081810360008301526148e581846140e5565b905092915050565b6000606082019050818103600083015261490781866140e5565b90506149166020830185613fbe565b6149236040830184613deb565b949350505050565b600060408201905081810360008301526149448161414f565b905081810360208301526149588184614052565b905092915050565b6000602082019050818103600083015261497981614172565b9050919050565b6000602082019050818103600083015261499981614195565b9050919050565b600060208201905081810360008301526149b9816141b8565b9050919050565b600060208201905081810360008301526149d9816141db565b9050919050565b600060208201905081810360008301526149f9816141fe565b9050919050565b60006020820190508181036000830152614a1981614221565b9050919050565b60006020820190508181036000830152614a3981614244565b9050919050565b60006020820190508181036000830152614a5981614267565b9050919050565b60006020820190508181036000830152614a798161428a565b9050919050565b60006020820190508181036000830152614a99816142ad565b9050919050565b60006020820190508181036000830152614ab9816142d0565b9050919050565b60006020820190508181036000830152614ad9816142f3565b9050919050565b60006020820190508181036000830152614af981614316565b9050919050565b60006020820190508181036000830152614b1981614339565b9050919050565b60006020820190508181036000830152614b398161435c565b9050919050565b60006020820190508181036000830152614b598161437f565b9050919050565b60006020820190508181036000830152614b79816143a2565b9050919050565b60006020820190508181036000830152614b99816143c5565b9050919050565b60006020820190508181036000830152614bb9816143e8565b9050919050565b60006020820190508181036000830152614bd98161440b565b9050919050565b60006020820190508181036000830152614bf98161442e565b9050919050565b6000602082019050614c156000830184614460565b92915050565b6000602082019050614c30600083018461446f565b92915050565b6000614c40614c51565b9050614c4c82826151b0565b919050565b6000604051905090565b600067ffffffffffffffff821115614c7657614c75615335565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614ca257614ca1615335565b5b614cab8261537d565b9050602081019050919050565b600067ffffffffffffffff821115614cd357614cd2615335565b5b614cdc8261537d565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614dfe8261509f565b9150614e098361509f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e3e57614e3d615279565b5b828201905092915050565b6000614e54826150b9565b9150614e5f836150b9565b92508260ff03821115614e7557614e74615279565b5b828201905092915050565b6000614e8b8261509f565b9150614e968361509f565b925082614ea657614ea56152a8565b5b828204905092915050565b6000614ebc826150b9565b9150614ec7836150b9565b925082614ed757614ed66152a8565b5b828204905092915050565b6000614eed8261509f565b9150614ef88361509f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f3157614f30615279565b5b828202905092915050565b6000614f478261509f565b9150614f528361509f565b925082821015614f6557614f64615279565b5b828203905092915050565b6000614f7b826150a9565b9150614f86836150a9565b925082821015614f9957614f98615279565b5b828203905092915050565b6000614faf8261507f565b9050919050565b6000614fc18261507f565b9050919050565b60008115159050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60008190506150708261581e565b919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006150d182615120565b9050919050565b60006150e382615120565b9050919050565b60006150f582615120565b9050919050565b600061510782615062565b9050919050565b60006151198261509f565b9050919050565b600061512b82615132565b9050919050565b600061513d8261507f565b9050919050565b82818337600083830152505050565b60005b83811015615171578082015181840152602081019050615156565b83811115615180576000848401525b50505050565b60006151918261509f565b915060008214156151a5576151a4615279565b5b600182039050919050565b6151b98261537d565b810181811067ffffffffffffffff821117156151d8576151d7615335565b5b80604052505050565b60006151ec8261509f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561521f5761521e615279565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000615253826150b9565b915061525e836150b9565b92508261526e5761526d6152a8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f536e617073686f74000000000000000000000000000000000000000000000000600082015250565b7f50726576696f7573207472616e73616374696f6e206e6f74206578656375746560008201527f6420796574000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f44617461206e6f74207265747269657665640000000000000000000000000000600082015250565b7f526573756c7473206172652076616c696420666f726576657200000000000000600082015250565b7f50726f706f73616c20697320616c726561647920696e76616c69646174656400600082015250565b7f50726f706f73616c2068617320616c7265616479206265656e207375626d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f526573756c742068617320657870697265640000000000000000000000000000600082015250565b7f5461726765742063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f5468657265206e65656420746f206265206174206c656173742036307320626560008201527f747765656e20656e64206f6620636f6f6c646f776e20616e642065787069726160208201527f74696f6e00000000000000000000000000000000000000000000000000000000604082015250565b7f526573756c7420686173206e6f74206578706972656420796574000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4176617461722063616e206e6f74206265207a65726f20616464726573730000600082015250565b7f477561726420646f6573206e6f7420696d706c656d656e742049455243313635600082015250565b7f43616e6e6f742065786563757465207472616e73616374696f6e20616761696e600082015250565b7f5761697420666f72206164646974696f6e616c20636f6f6c646f776e00000000600082015250565b7f4e6f2071756572792069642073657420666f722070726f76696465642070726f60008201527f706f73616c000000000000000000000000000000000000000000000000000000602082015250565b7f50726f706f73616c20686173206265656e20696e76616c696461746564000000600082015250565b7f5472616e73616374696f6e20776173206e6f7420617070726f76656400000000600082015250565b7f4d6f64756c65207472616e73616374696f6e206661696c656400000000000000600082015250565b7f556e6578706563746564207472616e73616374696f6e20686173680000000000600082015250565b6002811061582f5761582e6152d7565b5b50565b61583b81614fa4565b811461584657600080fd5b50565b61585281614fb6565b811461585d57600080fd5b50565b61586981614fc8565b811461587457600080fd5b50565b6158808161502c565b811461588b57600080fd5b50565b6002811061589b57600080fd5b50565b6158a78161509f565b81146158b257600080fd5b50565b6158be816150a9565b81146158c957600080fd5b5056fea26469706673582212206892507425d626221bb2779913fc06776f187ccf218097bbdab0e89b8750900764736f6c63430008070033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/app/src/store/modules/models.ts b/packages/app/src/store/modules/models.ts index 1f8d8b74..488f6d50 100644 --- a/packages/app/src/store/modules/models.ts +++ b/packages/app/src/store/modules/models.ts @@ -1,4 +1,5 @@ import { ContractInterface } from "@ethersproject/contracts" +import { ContractAbis, KnownContracts } from "@gnosis.pm/zodiac" export enum ModuleType { TELLOR = "tellor", @@ -32,6 +33,22 @@ export const MODULE_NAMES: Record = { [ModuleType.CONNEXT]: "Connext Module", } +export const MODULE_ABIS: Record = { + [ModuleType.TELLOR]: ContractAbis[KnownContracts.TELLOR], + [ModuleType.OPTIMISTIC_GOVERNOR]: ContractAbis[KnownContracts.OPTIMISTIC_GOVERNOR], + [ModuleType.REALITY_ERC20]: ContractAbis[KnownContracts.REALITY_ERC20], + [ModuleType.REALITY_ETH]: ContractAbis[KnownContracts.REALITY_ETH], + [ModuleType.KLEROS_REALITY]: ContractAbis[KnownContracts.REALITY_ETH], + [ModuleType.UNKNOWN]: [], + [ModuleType.BRIDGE]: ContractAbis[KnownContracts.BRIDGE], + [ModuleType.DELAY]: ContractAbis[KnownContracts.DELAY], + [ModuleType.ROLES_V1]: ContractAbis[KnownContracts.ROLES_V1], + [ModuleType.ROLES_V2]: ContractAbis[KnownContracts.ROLES_V2], + [ModuleType.EXIT]: ContractAbis[KnownContracts.EXIT_ERC20], + [ModuleType.OZ_GOVERNOR]: ContractAbis[KnownContracts.OZ_GOVERNOR], + [ModuleType.CONNEXT]: ContractAbis[KnownContracts.CONNEXT], +} + export enum ModuleOperation { CREATE, REMOVE, @@ -53,13 +70,12 @@ export interface ModuleContract { type: ModuleType name?: string abi?: ContractInterface - bytecode?: string } export interface ModuleContractMetadata { type: ModuleType + name?: string abi: ContractInterface - bytecode: string } export interface DelayModule extends Module { diff --git a/packages/app/src/utils/modulesValidation.ts b/packages/app/src/utils/modulesValidation.ts index f0d942aa..cad1d549 100644 --- a/packages/app/src/utils/modulesValidation.ts +++ b/packages/app/src/utils/modulesValidation.ts @@ -1,31 +1,12 @@ import { Contract, ethers } from "ethers" -import { ModuleContractMetadata, ModuleType } from "../store/modules/models" -import DELAY_MODIFIER_METADATA from "../contracts/Delay.json" -import REALITY_ERC20_MODULE_METADATA from "../contracts/RealityModuleERC20.json" -import REALITY_ETH_MODULE_METADATA from "../contracts/RealityModuleETH.json" -import TELLOR_MODULE_METADATA from "../contracts/Tellor.json" -import OPTIMISTIC_GOVERNOR_MODULE_METADATA from "../contracts/OptimisticGovernor.json" -import BRIDGE_MODULE_METADATA from "../contracts/AMBModule.json" -import EXIT_MODULE_METADATA from "../contracts/Exit.json" -import ROLES_MODIFIER_METADATA from "../contracts/RolesMod.json" -import OZ_GOVERNOR_METADATA from "../contracts/OZGovernorModule.json" -import CONNEXT_METADATA from "../contracts/ConnextModule.json" +import { + MODULE_ABIS, + MODULE_NAMES, + ModuleContractMetadata, + ModuleType, +} from "../store/modules/models" import { NETWORK } from "./networks" -const MODULES_METADATA = { - [ModuleType.TELLOR]: TELLOR_MODULE_METADATA, - [ModuleType.OPTIMISTIC_GOVERNOR]: OPTIMISTIC_GOVERNOR_MODULE_METADATA, - [ModuleType.REALITY_ETH]: REALITY_ETH_MODULE_METADATA, - [ModuleType.KLEROS_REALITY]: REALITY_ETH_MODULE_METADATA, - [ModuleType.REALITY_ERC20]: REALITY_ERC20_MODULE_METADATA, - [ModuleType.EXIT]: EXIT_MODULE_METADATA, - [ModuleType.BRIDGE]: BRIDGE_MODULE_METADATA, - [ModuleType.DELAY]: DELAY_MODIFIER_METADATA, - [ModuleType.ROLES_V1]: ROLES_MODIFIER_METADATA, - [ModuleType.OZ_GOVERNOR]: OZ_GOVERNOR_METADATA, - [ModuleType.CONNEXT]: CONNEXT_METADATA, -} - const GNOSIS_GENERIC_PROXY_CONTRACT_BYTECODE = "0x608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea265627a7a72315820d8a00dc4fe6bf675a9d7416fc2d00bb3433362aa8186b750f76c4027269667ff64736f6c634300050e0032" @@ -43,7 +24,7 @@ export function getModuleContractMetadata( module: ModuleType, ): ModuleContractMetadata | undefined { if (module === ModuleType.UNKNOWN) return - return { type: module, ...MODULES_METADATA[module] } + return { type: module, name: MODULE_NAMES[module], abi: MODULE_ABIS[module] } } export function isGnosisGenericProxy(bytecode: string) { diff --git a/packages/app/src/views/ModuleDetails/ModuleNoAvailable.tsx b/packages/app/src/views/ModuleDetails/ModuleNoAvailable.tsx index 179717a5..c5d9aa11 100644 --- a/packages/app/src/views/ModuleDetails/ModuleNoAvailable.tsx +++ b/packages/app/src/views/ModuleDetails/ModuleNoAvailable.tsx @@ -1,9 +1,9 @@ -import React from "react"; -import { makeStyles, Typography } from "@material-ui/core"; -import { ZodiacPaper } from "zodiac-ui-components"; -import { Link } from "../../components/text/Link"; -import { useSafeAppsSDK } from "@gnosis.pm/safe-apps-react-sdk"; -import { getNetworkExplorerInfo } from "../../utils/explorers"; +import React from "react" +import { makeStyles, Typography } from "@material-ui/core" +import { ZodiacPaper } from "zodiac-ui-components" +import { Link } from "../../components/text/Link" +import { useSafeAppsSDK } from "@gnosis.pm/safe-apps-react-sdk" +import { getNetworkExplorerInfo } from "../../utils/explorers" const useStyles = makeStyles((theme) => ({ root: { @@ -14,13 +14,13 @@ const useStyles = makeStyles((theme) => ({ }, link: { fontSize: 16, - } -})); + }, +})) export const ModuleNoAvailable = () => { - const classes = useStyles(); - const { safe } = useSafeAppsSDK(); - const { verifyUrl } = getNetworkExplorerInfo(safe.chainId) || {}; + const classes = useStyles() + const { safe } = useSafeAppsSDK() + const { verifyUrl } = getNetworkExplorerInfo(safe.chainId) || {} return ( @@ -28,12 +28,12 @@ export const ModuleNoAvailable = () => { No Read or Write functions available - We couldn't find an ABI and didn't recognize the bytecode for this - module’s contract. + We couldn't find an ABI and didn't recognize it as one of the known Zodiac + contracts. Verify this contract on Etherscan to fix this. - ); -}; + ) +}