@q-dev/gdk-sdk
Version:
Typescript Library to interact with GDK Contracts
518 lines • 58.9 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20MintingModule",
"sourceName": "contracts/presets/ERC20MintingModule.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "ERC20_MINTING_RESOURCE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ERC20Module_init",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "string",
"name": "resource_",
"type": "string"
},
{
"internalType": "string",
"name": "relatedExpertPanelName_",
"type": "string"
}
],
"name": "__ERC20Module_initAndSetDeps",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "bytes",
"name": "data_",
"type": "bytes"
}
],
"name": "arbitraryERC20Execute",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "data_",
"type": "bytes"
}
],
"name": "arbitrarySupportedERC20Execute",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "address[]",
"name": "recipients_",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amounts_",
"type": "uint256[]"
}
],
"name": "batchMintArbitraryERC20To",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "recipients_",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amounts_",
"type": "uint256[]"
}
],
"name": "batchMintSupportedERC20To",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
}
],
"name": "changeSupportedERC20",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "member_",
"type": "address"
},
{
"internalType": "string",
"name": "permission_",
"type": "string"
}
],
"name": "checkPermission",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getInjector",
"outputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResource",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getResourceRecords",
"outputs": [
{
"components": [
{
"internalType": "string",
"name": "existingRole",
"type": "string"
},
{
"internalType": "string",
"name": "resource",
"type": "string"
},
{
"internalType": "string[]",
"name": "permissions",
"type": "string[]"
}
],
"internalType": "struct IDAOIntegration.ResourceRecords[]",
"name": "records_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
}
],
"name": "isModuleERC20Owner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token_",
"type": "address"
},
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
}
],
"name": "mintArbitraryERC20To",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to_",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount_",
"type": "uint256"
}
],
"name": "mintSupportedERC20To",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "permissionManager",
"outputs": [
{
"internalType": "contract IPermissionManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry_",
"type": "address"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "setDependencies",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "injector_",
"type": "address"
}
],
"name": "setInjector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "supportedERC20",
"outputs": [
{
"internalType": "contract ISupportedERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner_",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b62000115565b600054610100900460ff16156200005a5760405162461bcd60e51b81526004016200005190620000b3565b60405180910390fd5b60005460ff90811614620000b1576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a89162000105565b60405180910390a15b565b60208082528101620000ff81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000ff565b608051612e016200014d600039600081816106e50152818161072e015281816107f80152818161083801526108b00152612e016000f3fe6080604052600436106101665760003560e01c806369130451116100d1578063cc7a20491161008a578063f13bdd4d11610064578063f13bdd4d1461041c578063f2fde38b1461043e578063f879aa141461045e578063fe77410c1461047e57600080fd5b8063cc7a2049146103bc578063d1057e31146103dc578063d8ad4e1c146103fc57600080fd5b80636913045114610305578063806ad7931461032557806383c0edda146103455780638cb941cc146103655780638fcacd7f14610385578063bb65dc83146103a757600080fd5b806337aa6f2a1161012357806337aa6f2a146102435780633e3b5b19146102635780634f1ef2861461028e57806352d1902d146102a157806357e2d8ff146102c35780635c60da1b146102f057600080fd5b806301ffc9a71461016b57806329b4d256146101a15780632a409438146101c35780632ac6442e146101e35780632afc138d146102035780633659cfe614610223575b600080fd5b34801561017757600080fd5b5061018b610186366004611c46565b61049e565b6040516101989190611c71565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc366004611cb5565b61050b565b005b3480156101cf57600080fd5b506101c16101de366004611cf2565b61059a565b3480156101ef57600080fd5b506101c16101fe366004611eb8565b610626565b34801561020f57600080fd5b5061018b61021e366004611f32565b61065d565b34801561022f57600080fd5b506101c161023e366004611f32565b6106db565b34801561024f57600080fd5b506101c161025e366004611f53565b6107ac565b34801561026f57600080fd5b50600080516020612d65833981519152545b6040516101989190611fc2565b6101c161029c366004612066565b6107ee565b3480156102ad57600080fd5b506102b66108a3565b60405161019891906120b9565b3480156102cf57600080fd5b506002546102e3906001600160a01b031681565b6040516101989190612109565b3480156102fc57600080fd5b50610281610900565b34801561031157600080fd5b506101c1610320366004612066565b61090f565b34801561033157600080fd5b506101c1610340366004611f32565b6109b4565b34801561035157600080fd5b506101c1610360366004612117565b6109fd565b34801561037157600080fd5b506101c1610380366004611f32565b610b03565b34801561039157600080fd5b5061039a610b21565b6040516101989190612205565b3480156103b357600080fd5b5061039a610baf565b3480156103c857600080fd5b506003546102e3906001600160a01b031681565b3480156103e857600080fd5b5061039a6103f7366004612267565b610c41565b34801561040857600080fd5b5061018b610417366004612066565b610cbe565b34801561042857600080fd5b50610431610d35565b60405161019891906123f1565b34801561044a57600080fd5b506101c1610459366004611f32565b6112cf565b34801561046a57600080fd5b506101c1610479366004612402565b611354565b34801561048a57600080fd5b5061039a61049936600461247c565b611429565b60006001600160e01b031982166363c8929f60e01b14806104cf57506001600160e01b0319821663f13bdd4d60e01b145b806104ea57506001600160e01b031982166336e447a160e21b145b8061050557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6105326040518060400160405280600681526020016543524541544560d01b81525061149e565b6002546040516308934a5f60e31b81526001600160a01b039091169063449a52f89061056490859085906004016124c3565b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050505050565b6105c16040518060400160405280600681526020016543524541544560d01b81525061149e565b6040516308934a5f60e31b81526001600160a01b0384169063449a52f8906105ef90859085906004016124c3565b600060405180830381600087803b15801561060957600080fd5b505af115801561061d573d6000803e3d6000fd5b50505050505050565b61064d6040518060400160405280600681526020016543524541544560d01b81525061149e565b6106588383836114c4565b505050565b6000306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb91906124e9565b6001600160a01b03161492915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361072c5760405162461bcd60e51b815260040161072390612553565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661075e611594565b6001600160a01b0316146107845760405162461bcd60e51b8152600401610723906125aa565b61078d816115b0565b604080516000808252602082019092526107a9918391906116a9565b50565b6107d36040518060400160405280600681526020016543524541544560d01b81525061149e565b6002546107ea906001600160a01b031683836114c4565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108365760405162461bcd60e51b815260040161072390612553565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610868611594565b6001600160a01b03161461088e5760405162461bcd60e51b8152600401610723906125aa565b610897826115b0565b6107ea828260016116a9565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ed5760405162461bcd60e51b815260040161072390612612565b50600080516020612d8583398151915290565b600061090a611594565b905090565b61091761178b565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906124e9565b600380546001600160a01b0319166001600160a01b03929092169190911790555033600080516020612d65833981519152555050565b6109db6040518060400160405280600681526020016555504441544560d01b81525061149e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610a1d5750600054600160ff909116105b80610a375750303b158015610a37575060005460ff166001145b610a535760405162461bcd60e51b81526004016107239061266b565b6000805460ff191660011790558015610a76576000805461ff0019166101001790555b604080516000815260208101909152610a9090869061090f565b610aa685600080516020612d6583398151915255565b610ab18484846117df565b8015610afc576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610af39060019061268f565b60405180910390a15b5050505050565b610b0b61178b565b6107a981600080516020612d6583398151915255565b60018054610b2e906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5a906126b3565b8015610ba75780601f10610b7c57610100808354040283529160200191610ba7565b820191906000526020600020905b815481529060010190602001808311610b8a57829003601f168201915b505050505081565b606060018054610bbe906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906126b3565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6060610c6a6040518060400160405280600681526020016555504441544560d01b81525061149e565b610cb483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506001600160a01b038816929150506117f6565b90505b9392505050565b600354604051633ca8e36d60e11b81526000916001600160a01b031690637951c6da90610cf49086906001908790600401612759565b602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906127a0565b60408051600380825260808201909252606091816020015b610d7160405180606001604052806060815260200160608152602001606081525090565b815260200190600190039081610d4d5790505090506000610dea60405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b81525081525061183a565b90506040518060600160405280610e8a60048054610e07906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e33906126b3565b8015610e805780601f10610e5557610100808354040283529160200191610e80565b820191906000526020600020905b815481529060010190602001808311610e6357829003601f168201915b50505050506118b3565b600081518110610e9c57610e9c6127c1565b6020026020010151815260200160018054610eb6906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee2906126b3565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b505050505081526020018281525082600081518110610f5057610f506127c1565b60200260200101819052506000610f9260405180602001604052806040518060400160405280600681526020016511561411549560d21b8152508152506118e7565b9050604051806060016040528061103260048054610faf906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdb906126b3565b80156110285780601f10610ffd57610100808354040283529160200191611028565b820191906000526020600020905b81548152906001019060200180831161100b57829003601f168201915b505050505061192b565b600081518110611044576110446127c1565b602002602001015181526020016001805461105e906126b3565b80601f016020809104026020016040519081016040528092919081815260200182805461108a906126b3565b80156110d75780601f106110ac576101008083540402835291602001916110d7565b820191906000526020600020905b8154815290600101906020018083116110ba57829003601f168201915b5050505050815260200182815250836001815181106110f8576110f86127c1565b602002602001018190525060405180606001604052806111a16004805461111e906126b3565b80601f016020809104026020016040519081016040528092919081815260200182805461114a906126b3565b80156111975780601f1061116c57610100808354040283529160200191611197565b820191906000526020600020905b81548152906001019060200180831161117a57829003601f168201915b505050505061194c565b6000815181106111b3576111b36127c1565b60200260200101518152602001600180546111cd906126b3565b80601f01602080910402602001604051908101604052809291908181526020018280546111f9906126b3565b80156112465780601f1061121b57610100808354040283529160200191611246565b820191906000526020600020905b81548152906001019060200180831161122957829003601f168201915b505050505081526020016112a960405180604001604052806040518060400160405280600681526020016555504441544560d01b81525081526020016040518060400160405280600681526020016543524541544560d01b81525081525061183a565b815250836002815181106112bf576112bf6127c1565b6020026020010181905250505090565b6112f66040518060400160405280600681526020016555504441544560d01b81525061149e565b60025460405163f2fde38b60e01b81526001600160a01b039091169063f2fde38b90611326908490600401611fc2565b600060405180830381600087803b15801561134057600080fd5b505af1158015610afc573d6000803e3d6000fd5b600054610100900460ff16158080156113745750600054600160ff909116105b8061138e5750303b15801561138e575060005460ff166001145b6113aa5760405162461bcd60e51b81526004016107239061266b565b6000805460ff1916600117905580156113cd576000805461ff0019166101001790555b6113d88484846117df565b8015611423576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061141a9060019061268f565b60405180910390a15b50505050565b60606114526040518060400160405280600681526020016555504441544560d01b81525061149e565b610cb783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506002546001600160a01b0316929150506117f6565b6114a83382610cbe565b6107a95760405162461bcd60e51b815260040161072390612807565b8151815181146114e65760405162461bcd60e51b815260040161072390612866565b60005b81811015610afc57846001600160a01b031663449a52f8858381518110611512576115126127c1565b602002602001015185848151811061152c5761152c6127c1565b60200260200101516040518363ffffffff1660e01b81526004016115519291906124c3565b600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505050508061158d9061288c565b90506114e9565b600080516020612d85833981519152546001600160a01b031690565b60035460408051631082599b60e31b815290516000926001600160a01b031691638412ccd89160048083019260209291908290030181865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e91906128c4565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167f91906124e9565b9050336001600160a01b038216146107ea5760405162461bcd60e51b815260040161072390612928565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116dc576106588361196d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611736575060408051601f3d908101601f1916820190925261173391810190612943565b60015b6117525760405162461bcd60e51b8152600401610723906129ad565b600080516020612d85833981519152811461177f5760405162461bcd60e51b815260040161072390612a01565b506106588383836119c3565b60006117a3600080516020612d658339815191525490565b90506001600160a01b03811615806117c357506001600160a01b03811633145b6107a95760405162461bcd60e51b815260040161072390612a43565b60046117eb8282612ae4565b5061065883836119e8565b6060610cb7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611a36565b6040805160028082526060828101909352816020015b60608152602001906001900390816118505750508251815191925090829060009061187d5761187d6127c1565b60209081029190910101528160016020020151816001815181106118a3576118a36127c1565b6020026020010181905250919050565b60606105056040518060200160405280846040516020016118d49190612bc5565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b60608152602001906001900390816118fe575050825181519192509082906000906118a3576118a36127c1565b60606105056040518060200160405280846040516020016118d49190612be7565b60606105056040518060200160405280846040516020016118d49190612c00565b6001600160a01b0381163b6119945760405162461bcd60e51b815260040161072390612c61565b600080516020612d8583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6119cc83611ad4565b6000825111806119d95750805b15610658576114238383611b14565b600054610100900460ff16611a0f5760405162461bcd60e51b815260040161072390612cb7565b600280546001600160a01b0319166001600160a01b03841617905560016106588282612ae4565b606082471015611a585760405162461bcd60e51b815260040161072390612d08565b600080866001600160a01b03168587604051611a749190612d18565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b5091509150611ac787838387611b39565b925050505b949350505050565b611add8161196d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610cb78383604051806060016040528060278152602001612da560279139611b82565b60608315611b78578251600003611b71576001600160a01b0385163b611b715760405162461bcd60e51b815260040161072390612d54565b5081611acc565b611acc8383611bfa565b6060600080856001600160a01b031685604051611b9f9190612d18565b600060405180830381855af49150503d8060008114611bda576040519150601f19603f3d011682016040523d82523d6000602084013e611bdf565b606091505b5091509150611bf086838387611b39565b9695505050505050565b815115611c0a5781518083602001fd5b8060405162461bcd60e51b81526004016107239190612205565b6001600160e01b031981165b81146107a957600080fd5b803561050581611c24565b600060208284031215611c5b57611c5b600080fd5b6000611acc8484611c3b565b8015155b82525050565b602081016105058284611c67565b60006001600160a01b038216610505565b611c3081611c7f565b803561050581611c90565b80611c30565b803561050581611ca4565b60008060408385031215611ccb57611ccb600080fd5b6000611cd78585611c99565b9250506020611ce885828601611caa565b9150509250929050565b600080600060608486031215611d0a57611d0a600080fd5b6000611d168686611c99565b9350506020611d2786828701611c99565b9250506040611d3886828701611caa565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715611d7d57611d7d611d42565b6040525050565b6000611d8f60405190565b9050611d9b8282611d58565b919050565b60006001600160401b03821115611db957611db9611d42565b5060209081020190565b6000611dd6611dd184611da0565b611d84565b83815290506020808201908402830185811115611df557611df5600080fd5b835b81811015611e1757611e098782611c99565b835260209283019201611df7565b5050509392505050565b600082601f830112611e3557611e35600080fd5b8135611acc848260208601611dc3565b6000611e53611dd184611da0565b83815290506020808201908402830185811115611e7257611e72600080fd5b835b81811015611e1757611e868782611caa565b835260209283019201611e74565b600082601f830112611ea857611ea8600080fd5b8135611acc848260208601611e45565b600080600060608486031215611ed057611ed0600080fd5b6000611edc8686611c99565b93505060208401356001600160401b03811115611efb57611efb600080fd5b611f0786828701611e21565b92505060408401356001600160401b03811115611f2657611f26600080fd5b611d3886828701611e94565b600060208284031215611f4757611f47600080fd5b6000611acc8484611c99565b60008060408385031215611f6957611f69600080fd5b82356001600160401b03811115611f8257611f82600080fd5b611f8e85828601611e21565b92505060208301356001600160401b03811115611fad57611fad600080fd5b611ce885828601611e94565b611c6b81611c7f565b602081016105058284611fb9565b60006001600160401b03821115611fe957611fe9611d42565b601f19601f83011660200192915050565b82818337506000910152565b6000612014611dd184611fd0565b90508281526020810184848401111561202f5761202f600080fd5b61203a848285611ffa565b509392505050565b600082601f83011261205657612056600080fd5b8135611acc848260208601612006565b6000806040838503121561207c5761207c600080fd5b60006120888585611c99565b92505060208301356001600160401b038111156120a7576120a7600080fd5b611ce885828601612042565b80611c6b565b6020810161050582846120b3565b60006105056001600160a01b0383166120de565b90565b6001600160a01b031690565b6000610505826120c7565b6000610505826120ea565b611c6b816120f5565b602081016105058284612100565b6000806000806080858703121561213057612130600080fd5b600061213c8787611c99565b945050602061214d87828801611c99565b93505060408501356001600160401b0381111561216c5761216c600080fd5b61217887828801612042565b92505060608501356001600160401b0381111561219757612197600080fd5b6121a387828801612042565b91505092959194509250565b60005b838110156121ca5781810151838201526020016121b2565b50506000910152565b60006121dd825190565b8084526020840193506121f48185602086016121af565b601f01601f19169290920192915050565b60208082528101610cb781846121d3565b60008083601f84011261222b5761222b600080fd5b5081356001600160401b0381111561224557612245600080fd5b60208301915083600182028301111561226057612260600080fd5b9250929050565b60008060006040848603121561227f5761227f600080fd5b600061228b8686611c99565b93505060208401356001600160401b038111156122aa576122aa600080fd5b6122b686828701612216565b92509250509250925092565b6000610cb783836121d3565b60200190565b60006122de825190565b808452602084019350836020820285016122f88560200190565b60005b8481101561232c578383038852815161231484826122c2565b935050602082016020989098019791506001016122fb565b50909695505050505050565b805160608084526000919084019061235082826121d3565b9150506020830151848203602086015261236a82826121d3565b9150506040830151848203604086015261238482826122d4565b95945050505050565b6000610cb78383612338565b60006123a3825190565b808452602084019350836020820285016123bd8560200190565b60005b8481101561232c57838303885281516123d9848261238d565b935050602082016020989098019791506001016123c0565b60208082528101610cb78184612399565b60008060006060848603121561241a5761241a600080fd5b60006124268686611c99565b93505060208401356001600160401b0381111561244557612445600080fd5b61245186828701612042565b92505060408401356001600160401b0381111561247057612470600080fd5b611d3886828701612042565b6000806020838503121561249257612492600080fd5b82356001600160401b038111156124ab576124ab600080fd5b6124b785828601612216565b92509250509250929050565b604081016124d18285611fb9565b610cb760208301846120b3565b805161050581611c90565b6000602082840312156124fe576124fe600080fd5b6000611acc84846124de565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b602082015290505b60400190565b602080825281016105058161250a565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b6020820152905061254d565b6020808252810161050581612563565b60388152602081017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006020820152905061254d565b60208082528101610505816125ba565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152905061254d565b6020808252810161050581612622565b600060ff8216610505565b611c6b8161267b565b602081016105058284612686565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806126c757607f821691505b6020821081036126d9576126d961269d565b50919050565b600081546126ec816126b3565b80855260208501945060018216801561270c576001811461272257612750565b60ff198316865260208215150286019350612750565b60008581526020902060005b8381101561274a5781548882015260019091019060200161272e565b87019450505b50505092915050565b606081016127678286611fb9565b818103602083015261277981856126df565b9050818103604083015261238481846121d3565b801515611c30565b80516105058161278d565b6000602082840312156127b5576127b5600080fd5b6000611acc8484612795565b634e487b7160e01b600052603260045260246000fd5b60208082527f45524332304d696e74696e673a207065726d697373696f6e2064656e6965642e91019081526122ce565b60208082528101610505816127d7565b60348152602081017f45524332304d696e74696e673a206c656e67746873206f6620696e7075742061815273393930bcb99030b932903234b33332b932b73a1760611b6020820152905061254d565b6020808252810161050581612817565b634e487b7160e01b600052601160045260246000fd5b60006001820161289e5761289e612876565b5060010190565b600061050582611c7f565b611c30816128a5565b8051610505816128b0565b6000602082840312156128d9576128d9600080fd5b6000611acc84846128b9565b60288152602081017f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f208152673ab833b930b2329760c11b6020820152905061254d565b60208082528101610505816128e5565b805161050581611ca4565b60006020828403121561295857612958600080fd5b6000611acc8484612938565b602e8152602081017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b6020820152905061254d565b6020808252810161050581612964565b60298152602081017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b6020820152905061254d565b60208082528101610505816129bd565b601a8152602081017f446570656e64616e743a206e6f7420616e20696e6a6563746f72000000000000815290506122ce565b6020808252810161050581612a11565b60006105056120db8381565b612a6883612a53565b815460001960089490940293841b1916921b91909117905550565b6000610658818484612a5f565b818110156107ea57612aa3600082612a83565b600101612a90565b601f821115610658576000818152602090206020601f85010481016020851015612ad25750805b610afc6020601f860104830182612a90565b81516001600160401b03811115612afd57612afd611d42565b612b0782546126b3565b612b12828285612aab565b506020601f821160018114612b475760008315612b2f5750848201515b600019600885021c1981166002850217855550610afc565b600084815260208120601f198516915b82811015612b775787850151825560209485019460019092019101612b57565b5084821015612b945783870151600019601f87166008021c191681555b50505050600202600101905550565b6000612bad825190565b612bbb8185602086016121af565b9290920192915050565b6d2220a7a6b2b6b132b92937b6329d60911b81525b600e016105058183612ba3565b6d2220a7a2bc3832b93a2937b6329d60911b8152612bda565b6d2220a7ab37ba34b733a937b6329d60911b8152612bda565b602d8152602081017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b6020820152905061254d565b6020808252810161050581612c19565b602b8152602081017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152905061254d565b6020808252810161050581612c71565b60268152602081017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152905061254d565b6020808252810161050581612cc7565b6105058183612ba3565b601d8152602081017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815290506122ce565b6020808252810161050581612d2256fe3d1f25f1ac447e55e7fec744471c4dab1c6a2b6ffb897825f9ea3d2e8c9be583360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f1ab98ef7cb8ccabba649d92eb0e848aa86f3aa3ae520d5e4d03a07ed3809f1264736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101665760003560e01c806369130451116100d1578063cc7a20491161008a578063f13bdd4d11610064578063f13bdd4d1461041c578063f2fde38b1461043e578063f879aa141461045e578063fe77410c1461047e57600080fd5b8063cc7a2049146103bc578063d1057e31146103dc578063d8ad4e1c146103fc57600080fd5b80636913045114610305578063806ad7931461032557806383c0edda146103455780638cb941cc146103655780638fcacd7f14610385578063bb65dc83146103a757600080fd5b806337aa6f2a1161012357806337aa6f2a146102435780633e3b5b19146102635780634f1ef2861461028e57806352d1902d146102a157806357e2d8ff146102c35780635c60da1b146102f057600080fd5b806301ffc9a71461016b57806329b4d256146101a15780632a409438146101c35780632ac6442e146101e35780632afc138d146102035780633659cfe614610223575b600080fd5b34801561017757600080fd5b5061018b610186366004611c46565b61049e565b6040516101989190611c71565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc366004611cb5565b61050b565b005b3480156101cf57600080fd5b506101c16101de366004611cf2565b61059a565b3480156101ef57600080fd5b506101c16101fe366004611eb8565b610626565b34801561020f57600080fd5b5061018b61021e366004611f32565b61065d565b34801561022f57600080fd5b506101c161023e366004611f32565b6106db565b34801561024f57600080fd5b506101c161025e366004611f53565b6107ac565b34801561026f57600080fd5b50600080516020612d65833981519152545b6040516101989190611fc2565b6101c161029c366004612066565b6107ee565b3480156102ad57600080fd5b506102b66108a3565b60405161019891906120b9565b3480156102cf57600080fd5b506002546102e3906001600160a01b031681565b6040516101989190612109565b3480156102fc57600080fd5b50610281610900565b34801561031157600080fd5b506101c1610320366004612066565b61090f565b34801561033157600080fd5b506101c1610340366004611f32565b6109b4565b34801561035157600080fd5b506101c1610360366004612117565b6109fd565b34801561037157600080fd5b506101c1610380366004611f32565b610b03565b34801561039157600080fd5b5061039a610b21565b6040516101989190612205565b3480156103b357600080fd5b5061039a610baf565b3480156103c857600080fd5b506003546102e3906001600160a01b031681565b3480156103e857600080fd5b5061039a6103f7366004612267565b610c41565b34801561040857600080fd5b5061018b610417366004612066565b610cbe565b34801561042857600080fd5b50610431610d35565b60405161019891906123f1565b34801561044a57600080fd5b506101c1610459366004611f32565b6112cf565b34801561046a57600080fd5b506101c1610479366004612402565b611354565b34801561048a57600080fd5b5061039a61049936600461247c565b611429565b60006001600160e01b031982166363c8929f60e01b14806104cf57506001600160e01b0319821663f13bdd4d60e01b145b806104ea57506001600160e01b031982166336e447a160e21b145b8061050557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6105326040518060400160405280600681526020016543524541544560d01b81525061149e565b6002546040516308934a5f60e31b81526001600160a01b039091169063449a52f89061056490859085906004016124c3565b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050505050565b6105c16040518060400160405280600681526020016543524541544560d01b81525061149e565b6040516308934a5f60e31b81526001600160a01b0384169063449a52f8906105ef90859085906004016124c3565b600060405180830381600087803b15801561060957600080fd5b505af115801561061d573d6000803e3d6000fd5b50505050505050565b61064d6040518060400160405280600681526020016543524541544560d01b81525061149e565b6106588383836114c4565b505050565b6000306001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cb91906124e9565b6001600160a01b03161492915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361072c5760405162461bcd60e51b815260040161072390612553565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661075e611594565b6001600160a01b0316146107845760405162461bcd60e51b8152600401610723906125aa565b61078d816115b0565b604080516000808252602082019092526107a9918391906116a9565b50565b6107d36040518060400160405280600681526020016543524541544560d01b81525061149e565b6002546107ea906001600160a01b031683836114c4565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108365760405162461bcd60e51b815260040161072390612553565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610868611594565b6001600160a01b03161461088e5760405162461bcd60e51b8152600401610723906125aa565b610897826115b0565b6107ea828260016116a9565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ed5760405162461bcd60e51b815260040161072390612612565b50600080516020612d8583398151915290565b600061090a611594565b905090565b61091761178b565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906124e9565b600380546001600160a01b0319166001600160a01b03929092169190911790555033600080516020612d65833981519152555050565b6109db6040518060400160405280600681526020016555504441544560d01b81525061149e565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610a1d5750600054600160ff909116105b80610a375750303b158015610a37575060005460ff166001145b610a535760405162461bcd60e51b81526004016107239061266b565b6000805460ff191660011790558015610a76576000805461ff0019166101001790555b604080516000815260208101909152610a9090869061090f565b610aa685600080516020612d6583398151915255565b610ab18484846117df565b8015610afc576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610af39060019061268f565b60405180910390a15b5050505050565b610b0b61178b565b6107a981600080516020612d6583398151915255565b60018054610b2e906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5a906126b3565b8015610ba75780601f10610b7c57610100808354040283529160200191610ba7565b820191906000526020600020905b815481529060010190602001808311610b8a57829003601f168201915b505050505081565b606060018054610bbe906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906126b3565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b5050505050905090565b6060610c6a6040518060400160405280600681526020016555504441544560d01b81525061149e565b610cb483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506001600160a01b038816929150506117f6565b90505b9392505050565b600354604051633ca8e36d60e11b81526000916001600160a01b031690637951c6da90610cf49086906001908790600401612759565b602060405180830381865afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906127a0565b60408051600380825260808201909252606091816020015b610d7160405180606001604052806060815260200160608152602001606081525090565b815260200190600190039081610d4d5790505090506000610dea60405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b81525081525061183a565b90506040518060600160405280610e8a60048054610e07906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e33906126b3565b8015610e805780601f10610e5557610100808354040283529160200191610e80565b820191906000526020600020905b815481529060010190602001808311610e6357829003601f168201915b50505050506118b3565b600081518110610e9c57610e9c6127c1565b6020026020010151815260200160018054610eb6906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee2906126b3565b8015610f2f5780601f10610f0457610100808354040283529160200191610f2f565b820191906000526020600020905b815481529060010190602001808311610f1257829003601f168201915b505050505081526020018281525082600081518110610f5057610f506127c1565b60200260200101819052506000610f9260405180602001604052806040518060400160405280600681526020016511561411549560d21b8152508152506118e7565b9050604051806060016040528061103260048054610faf906126b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdb906126b3565b80156110285780601f10610ffd57610100808354040283529160200191611028565b820191906000526020600020905b81548152906001019060200180831161100b57829003601f168201915b505050505061192b565b600081518110611044576110446127c1565b602002602001015181526020016001805461105e906126b3565b80601f016020809104026020016040519081016040528092919081815260200182805461108a906126b3565b80156110d75780601f106110ac576101008083540402835291602001916110d7565b820191906000526020600020905b8154815290600101906020018083116110ba57829003601f168201915b5050505050815260200182815250836001815181106110f8576110f86127c1565b602002602001018190525060405180606001604052806111a16004805461111e906126b3565b80601f016020809104026020016040519081016040528092919081815260200182805461114a906126b3565b80156111975780601f1061116c57610100808354040283529160200191611197565b820191906000526020600020905b81548152906001019060200180831161117a57829003601f168201915b505050505061194c565b6000815181106111b3576111b36127c1565b60200260200101518152602001600180546111cd906126b3565b80601f01602080910402602001604051908101604052809291908181526020018280546111f9906126b3565b80156112465780601f1061121b57610100808354040283529160200191611246565b820191906000526020600020905b81548152906001019060200180831161122957829003601f168201915b505050505081526020016112a960405180604001604052806040518060400160405280600681526020016555504441544560d01b81525081526020016040518060400160405280600681526020016543524541544560d01b81525081525061183a565b815250836002815181106112bf576112bf6127c1565b6020026020010181905250505090565b6112f66040518060400160405280600681526020016555504441544560d01b81525061149e565b60025460405163f2fde38b60e01b81526001600160a01b039091169063f2fde38b90611326908490600401611fc2565b600060405180830381600087803b15801561134057600080fd5b505af1158015610afc573d6000803e3d6000fd5b600054610100900460ff16158080156113745750600054600160ff909116105b8061138e5750303b15801561138e575060005460ff166001145b6113aa5760405162461bcd60e51b81526004016107239061266b565b6000805460ff1916600117905580156113cd576000805461ff0019166101001790555b6113d88484846117df565b8015611423576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061141a9060019061268f565b60405180910390a15b50505050565b60606114526040518060400160405280600681526020016555504441544560d01b81525061149e565b610cb783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506002546001600160a01b0316929150506117f6565b6114a83382610cbe565b6107a95760405162461bcd60e51b815260040161072390612807565b8151815181146114e65760405162461bcd60e51b815260040161072390612866565b60005b81811015610afc57846001600160a01b031663449a52f8858381518110611512576115126127c1565b602002602001015185848151811061152c5761152c6127c1565b60200260200101516040518363ffffffff1660e01b81526004016115519291906124c3565b600060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505050508061158d9061288c565b90506114e9565b600080516020612d85833981519152546001600160a01b031690565b60035460408051631082599b60e31b815290516000926001600160a01b031691638412ccd89160048083019260209291908290030181865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e91906128c4565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167f91906124e9565b9050336001600160a01b038216146107ea5760405162461bcd60e51b815260040161072390612928565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116dc576106588361196d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611736575060408051601f3d908101601f1916820190925261173391810190612943565b60015b6117525760405162461bcd60e51b8152600401610723906129ad565b600080516020612d85833981519152811461177f5760405162461bcd60e51b815260040161072390612a01565b506106588383836119c3565b60006117a3600080516020612d658339815191525490565b90506001600160a01b03811615806117c357506001600160a01b03811633145b6107a95760405162461bcd60e51b815260040161072390612a43565b60046117eb8282612ae4565b5061065883836119e8565b6060610cb7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611a36565b6040805160028082526060828101909352816020015b60608152602001906001900390816118505750508251815191925090829060009061187d5761187d6127c1565b60209081029190910101528160016020020151816001815181106118a3576118a36127c1565b6020026020010181905250919050565b60606105056040518060200160405280846040516020016118d49190612bc5565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b60608152602001906001900390816118fe575050825181519192509082906000906118a3576118a36127c1565b60606105056040518060200160405280846040516020016118d49190612be7565b60606105056040518060200160405280846040516020016118d49190612c00565b6001600160a01b0381163b6119945760405162461bcd60e51b815260040161072390612c61565b600080516020612d8583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6119cc83611ad4565b6000825111806119d95750805b15610658576114238383611b14565b600054610100900460ff16611a0f5760405162461bcd60e51b815260040161072390612cb7565b600280546001600160a01b0319166001600160a01b03841617905560016106588282612ae4565b606082471015611a585760405162461bcd60e51b815260040161072390612d08565b600080866001600160a01b03168587604051611a749190612d18565b60006040518083038185875af1925050503d8060008114611ab1576040519150601f19603f3d011682016040523d82523d6000602084013e611ab6565b606091505b5091509150611ac787838387611b39565b925050505b949350505050565b611add8161196d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610cb78383604051806060016040528060278152602001612da560279139611b82565b60608315611b78578251600003611b71576001600160a01b0385163b611b715760405162461bcd60e51b815260040161072390612d54565b5081611acc565b611acc8383611bfa565b6060600080856001600160a01b031685604051611b9f9190612d18565b600060405180830381855af49150503d8060008114611bda576040519150601f19603f3d011682016040523d82523d6000602084013e611bdf565b606091505b5091509150611bf086838387611b39565b9695505050505050565b815115611c0a5781518083602001fd5b8060405162461bcd60e51b81526004016107239190612205565b6001600160e01b031981165b81146107a957600080fd5b803561050581611c24565b600060208284031215611c5b57611c5b600080fd5b6000611acc8484611c3b565b8015155b82525050565b602081016105058284611c67565b60006001600160a01b038216610505565b611c3081611c7f565b803561050581611c90565b80611c30565b803561050581611ca4565b60008060