niftyswap
Version:
AMM exchange for ERC-1155 tokens, inspired by Uniswap
467 lines • 62.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC1155Meta",
"sourceName": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newNonce",
"type": "uint256"
}
],
"name": "NonceChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_owners",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
}
],
"name": "getNonce",
"outputs": [
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "isOperator",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signerAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_sig",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "isValid",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSafeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSafeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
},
{
"internalType": "bool",
"name": "_isGasFee",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "metaSetApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "_ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_operator",
"type": "address"
},
{
"internalType": "bool",
"name": "_approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "_interfaceID",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50613356806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a3d4926e11610081578063f242432a1161005b578063f242432a146101b5578063f5d4c820146101c8578063fa4e12d7146101db576100d3565b8063a3d4926e1461017c578063ce0b514b1461018f578063e985e9c5146101a2576100d3565b80632eb2c2d6116100b25780632eb2c2d6146101345780634e1273f414610149578063a22cb46514610169576100d3565b8062fdd58e146100d857806301ffc9a7146101015780632d0335ab14610121575b600080fd5b6100eb6100e6366004612907565b6101ee565b6040516100f89190612f14565b60405180910390f35b61011461010f366004612a11565b610221565b6040516100f89190612c5e565b6100eb61012f36600461250d565b610286565b610147610142366004612667565b6102ae565b005b61015c610157366004612932565b6103b9565b6040516100f89190612c1a565b61014761017736600461285d565b610505565b61014761018a3660046125aa565b61059e565b61014761019d36600461278a565b61071b565b6101146101b0366004612572565b6107fa565b6101476101c3366004612802565b610835565b6101476101d6366004612711565b610939565b6101146101e936600461288a565b610a69565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000141561027557506001610281565b61027e8261124a565b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff861614806102d757506102d785336107fa565b61032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806131fa602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061316b6030913960400191505060405180910390fd5b6103a485858585611294565b6103b2858585855a866115e8565b5050505050565b60608151835114610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061319b602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561042f57600080fd5b50604051908082528060200260200182016040528015610459578160200160208202803683370190505b50905060005b84518110156104fd5760008086838151811061047757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106104c757fe5b60200260200101518152602001908152602001600020548282815181106104ea57fe5b602090810291909101015260010161045f565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff85166105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612dfd565b60405180910390fd5b60606105fe61233e565b60606106b189857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c60405160200161063c9190612b10565b604051602081830303815290604052805190602001208c6040516020016106639190612b10565b604051602081830303815290604052805190602001208c610685576000610688565b60015b60405160200161069d96959493929190612c69565b604051602081830303815290604052611855565b90506106bf89898989611294565b841561070257808060200190518101906106d99190612adb565b80945081935050506106f3898989898660200151886115e8565b6106fd8983611a24565b610710565b610710898989895a866115e8565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612ce6565b606061077261233e565b60606107aa89857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610685576000610688565b90506107b889898989611ccd565b84156107ec57808060200190518101906107d29190612adb565b80945081935050506106f389898989866020015188611dd0565b610710898989895a86611dd0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff8616148061085e575061085e85336107fa565b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613065602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613003602b913960400191505060405180910390fd5b61092b85858585611ccd565b6103b2858585855a86611dd0565b606061099586837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa52482898961096f576000610972565b60015b8961097e576000610981565b60015b60405160200161069d959493929190612caa565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610a29908890612c5e565b60405180910390a38215610a6157610a3f61233e565b81806020019051810190610a539190612aa8565b9050610a5f8782611a24565b505b505050505050565b600080825111610ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806132296043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806131c76033913960400191505060405180910390fd5b6000610b3b83611fc1565b60f81c905060058110610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b60008160ff166005811115610baa57fe5b9050600080808080856005811115610bbe57fe5b1415610c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806130fe6036913960400191505060405180910390fd5b6001856005811115610c2357fe5b1415610d66578751606114610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610c8e88600061207e565b9250610c9b88602061207e565b915087604081518110610caa57fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506112429650505050505050565b6002856005811115610d7457fe5b1415610ec4578751606114610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610ddf88600061207e565b9250610dec88602061207e565b915087604081518110610dfb57fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610d14573d6000803e3d6000fd5b6003856005811115610ed257fe5b141561108a57604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b83811015610f60578181015183820152602001610f48565b50505050905090810190601f168015610f8d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610fc0578181015183820152602001610fa8565b50505050905090810190601f168015610fed5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561100c57600080fd5b505afa158015611020573d6000803e3d6000fd5b505050506040513d602081101561103657600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b600485600581111561109857fe5b14156111f157604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b83811015611128578181015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d602081101561119d57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b80518251146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061308f6035913960400191505060405180910390fd5b815160005b818110156114e05761138383828151811061130a57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061135e57fe5b60200260200101518152602001908152602001600020546120e690919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106113cf57fe5b60200260200101518152602001908152602001600020819055506114718382815181106113f857fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061144c57fe5b602002602001015181526020019081526020016000205461215d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106114bd57fe5b6020908102919091018101518252810191909152604001600020556001016112f3565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561158d578181015183820152602001611575565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156115cc5781810151838201526020016115b4565b5050505090500194505050505060405180910390a45050505050565b6116078573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156116bf5781810151838201526020016116a7565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156116fe5781810151838201526020016116e6565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561173a578181015183820152602001611722565b50505050905090810190601f1680156117675780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561178c57600080fd5b5087f11580156117a0573d6000803e3d6000fd5b50505050506040513d60208110156117b757600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061326c603f913960400191505060405180910390fd5b6060808380602001905181019061186c9190612a51565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906118a483604161207e565b90508181108015906118b857508160640181105b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612e5a565b600061192a8683878051906020012060405160200161190f93929190612b46565b6040516020818303038152906040528051906020012061220f565b9050606086838760405160200161194393929190612b6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916119ce91612f14565b60405180910390a26119e289838388610a69565b611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612d43565b50505050509392505050565b6000611a338260600151611fc1565b60f81c905060028110611a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612eb7565b60008160ff166002811115611a8357fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff1615611ab9578660400151611abb565b335b92506000856002811115611acb57fe5b1415611bca578660600151806020019051810190611ae99190612545565b909450915073ffffffffffffffffffffffffffffffffffffffff8416301415611b3a57611b1888848484611ccd565b611b358884845a8560405180602001604052806000815250611dd0565b611bc5565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a90611b92908b90879087908790600401612bd5565b600060405180830381600087803b158015611bac57600080fd5b505af1158015611bc0573d6000803e3d6000fd5b505050505b611cc3565b8660600151806020019051810190611be29190612529565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90611c3b908b9087908690600401612ba4565b602060405180830381600087803b158015611c5557600080fd5b505af1158015611c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d91906129f5565b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612da0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320858452909152902054611d0690826120e6565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020818152604080832087845282528083209490945591861681528082528281208582529091522054611d56908261215d565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b611def8573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ea8578181015183820152602001611e90565b50505050905090810190601f168015611ed55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b158015611ef857600080fd5b5087f1158015611f0c573d6000803e3d6000fd5b50505050506040513d6020811015611f2357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806132ab603a913960400191505060405180910390fd5b60008082511161201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061302e6037913960400191505060405180910390fd5b8160018351038151811061202c57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b600081602001835110156120dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806132e5603c913960400191505060405180910390fd5b50016020015190565b60008282111561215757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156121d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906121d157507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b602083106122dc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161229f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f83011261238c578081fd5b813561239f61239a82612f41565b612f1d565b8181529150602080830190848101818402860182018710156123c057600080fd5b60005b848110156123df578135845292820192908201906001016123c3565b505050505092915050565b600082601f8301126123fa578081fd5b813561240861239a82612f5f565b915080825283602082850101111561241f57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612448578081fd5b815161245661239a82612f5f565b915080825283602082850101111561246d57600080fd5b61247e816020840160208601612f9f565b5092915050565b600060808284031215612496578081fd5b6040516080810167ffffffffffffffff82821081831117156124b457fe5b816040528293508451835260208501516020840152604085015191506124d982612fcf565b81604084015260608501519150808211156124f357600080fd5b5061250085828601612438565b6060830152505092915050565b60006020828403121561251e578081fd5b81356121d181612fcf565b60006020828403121561253a578081fd5b81516121d181612fcf565b60008060408385031215612557578081fd5b825161256281612fcf565b6020939093015192949293505050565b60008060408385031215612584578182fd5b823561258f81612fcf565b9150602083013561259f81612fcf565b809150509250929050565b60008060008060008060c087890312156125c2578182fd5b86356125cd81612fcf565b955060208701356125dd81612fcf565b9450604087013567ffffffffffffffff808211156125f9578384fd5b6126058a838b0161237c565b9550606089013591508082111561261a578384fd5b6126268a838b0161237c565b94506080890135915061263882612ff4565b90925060a0880135908082111561264d578283fd5b5061265a89828a016123ea565b9150509295509295509295565b600080600080600060a0868803121561267e578081fd5b853561268981612fcf565b9450602086013561269981612fcf565b9350604086013567ffffffffffffffff808211156126b5578283fd5b6126c189838a0161237c565b945060608801359150808211156126d6578283fd5b6126e289838a0161237c565b935060808801359150808211156126f7578283fd5b50612704888289016123ea565b9150509295509295909350565b600080600080600060a08688031215612728578081fd5b853561273381612fcf565b9450602086013561274381612fcf565b9350604086013561275381612ff4565b9250606086013561276381612ff4565b9150608086013567ffffffffffffffff81111561277e578182fd5b612704888289016123ea565b60008060008060008060c087890312156127a2578384fd5b86356127ad81612fcf565b955060208701356127bd81612fcf565b9450604087013593506060870135925060808701356127db81612ff4565b915060a087013567ffffffffffffffff8111156127f6578182fd5b61265a89828a016123ea565b600080600080600060a08688031215612819578283fd5b853561282481612fcf565b9450602086013561283481612fcf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561277e578182fd5b6000806040838503121561286f578182fd5b823561287a81612fcf565b9150602083013561259f81612ff4565b6000806000806080858703121561289f578182fd5b84356128aa81612fcf565b935060208501359250604085013567ffffffffffffffff808211156128cd578384fd5b6128d9888389016123ea565b935060608701359150808211156128ee578283fd5b506128fb878288016123ea565b91505092959194509250565b60008060408385031215612919578182fd5b823561292481612fcf565b946020939093013593505050565b60008060408385031215612944578182fd5b823567ffffffffffffffff8082111561295b578384fd5b818501915085601f83011261296e578384fd5b813561297c61239a82612f41565b80828252602080830192508086018a82838702890101111561299c578889fd5b8896505b848710156129c75780356129b381612fcf565b8452600196909601959281019281016129a0565b5090965087013593505050808211156129de578283fd5b506129eb8582860161237c565b9150509250929050565b600060208284031215612a06578081fd5b81516121d181612ff4565b600060208284031215612a22578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121d1578182fd5b60008060408385031215612a63578182fd5b825167ffffffffffffffff80821115612a7a578384fd5b612a8686838701612438565b93506020850151915080821115612a9b578283fd5b506129eb85828601612438565b600060208284031215612ab9578081fd5b815167ffffffffffffffff811115612acf578182fd5b61124284828501612485565b60008060408385031215612aed578182fd5b825167ffffffffffffffff80821115612b04578384fd5b612a8686838701612485565b815160009082906020808601845b83811015612b3a57815185529382019390820190600101612b1e565b50929695505050505050565b60008451612b58818460208901612f9f565b91909101928352506020820152604001919050565b60008451612b7f818460208901612f9f565b82018481528351612b97816020808501908801612f9f565b0160200195945050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b81811015612c5257835183529284019291840191600101612c36565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612f3957fe5b604052919050565b600067ffffffffffffffff821115612f5557fe5b5060209081020190565b600067ffffffffffffffff821115612f7357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612fba578181015183820152602001612fa2565b83811115612fc9576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ff157600080fd5b50565b8015158114612ff157600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a2646970667358221220f4c7476882d4d2ee082a3c5ffbca34153b801c91b645155a177647fac534e14664736f6c63430007040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a3d4926e11610081578063f242432a1161005b578063f242432a146101b5578063f5d4c820146101c8578063fa4e12d7146101db576100d3565b8063a3d4926e1461017c578063ce0b514b1461018f578063e985e9c5146101a2576100d3565b80632eb2c2d6116100b25780632eb2c2d6146101345780634e1273f414610149578063a22cb46514610169576100d3565b8062fdd58e146100d857806301ffc9a7146101015780632d0335ab14610121575b600080fd5b6100eb6100e6366004612907565b6101ee565b6040516100f89190612f14565b60405180910390f35b61011461010f366004612a11565b610221565b6040516100f89190612c5e565b6100eb61012f36600461250d565b610286565b610147610142366004612667565b6102ae565b005b61015c610157366004612932565b6103b9565b6040516100f89190612c1a565b61014761017736600461285d565b610505565b61014761018a3660046125aa565b61059e565b61014761019d36600461278a565b61071b565b6101146101b0366004612572565b6107fa565b6101476101c3366004612802565b610835565b6101476101d6366004612711565b610939565b6101146101e936600461288a565b610a69565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000141561027557506001610281565b61027e8261124a565b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff861614806102d757506102d785336107fa565b61032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806131fa602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061316b6030913960400191505060405180910390fd5b6103a485858585611294565b6103b2858585855a866115e8565b5050505050565b60608151835114610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061319b602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561042f57600080fd5b50604051908082528060200260200182016040528015610459578160200160208202803683370190505b50905060005b84518110156104fd5760008086838151811061047757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106104c757fe5b60200260200101518152602001908152602001600020548282815181106104ea57fe5b602090810291909101015260010161045f565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff85166105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612dfd565b60405180910390fd5b60606105fe61233e565b60606106b189857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c60405160200161063c9190612b10565b604051602081830303815290604052805190602001208c6040516020016106639190612b10565b604051602081830303815290604052805190602001208c610685576000610688565b60015b60405160200161069d96959493929190612c69565b604051602081830303815290604052611855565b90506106bf89898989611294565b841561070257808060200190518101906106d99190612adb565b80945081935050506106f3898989898660200151886115e8565b6106fd8983611a24565b610710565b610710898989895a866115e8565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612ce6565b606061077261233e565b60606107aa89857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610685576000610688565b90506107b889898989611ccd565b84156107ec57808060200190518101906107d29190612adb565b80945081935050506106f389898989866020015188611dd0565b610710898989895a86611dd0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff8616148061085e575061085e85336107fa565b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613065602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613003602b913960400191505060405180910390fd5b61092b85858585611ccd565b6103b2858585855a86611dd0565b606061099586837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa52482898961096f576000610972565b60015b8961097e576000610981565b60015b60405160200161069d959493929190612caa565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610a29908890612c5e565b60405180910390a38215610a6157610a3f61233e565b81806020019051810190610a539190612aa8565b9050610a5f8782611a24565b505b505050505050565b600080825111610ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806132296043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806131c76033913960400191505060405180910390fd5b6000610b3b83611fc1565b60f81c905060058110610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b60008160ff166005811115610baa57fe5b9050600080808080856005811115610bbe57fe5b1415610c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806130fe6036913960400191505060405180910390fd5b6001856005811115610c2357fe5b1415610d66578751606114610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610c8e88600061207e565b9250610c9b88602061207e565b915087604081518110610caa57fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506112429650505050505050565b6002856005811115610d7457fe5b1415610ec4578751606114610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610ddf88600061207e565b9250610dec88602061207e565b915087604081518110610dfb57fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610d14573d6000803e3d6000fd5b6003856005811115610ed257fe5b141561108a57604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b83811015610f60578181015183820152602001610f48565b50505050905090810190601f168015610f8d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610fc0578181015183820152602001610fa8565b50505050905090810190601f168015610fed5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561100c57600080fd5b505afa158015611020573d6000803e3d6000fd5b505050506040513d602081101561103657600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b600485600581111561109857fe5b14156111f157604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b83811015611128578181015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d602081101561119d57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b80518251146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061308f6035913960400191505060405180910390fd5b815160005b818110156114e05761138383828151811061130a57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061135e57fe5b60200260200101518152602001908152602001600020546120e690919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106113cf57fe5b60200260200101518152602001908152602001600020819055506114718382815181106113f857fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061144c57fe5b602002602001015181526020019081526020016000205461215d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106114bd57fe5b6020908102919091018101518252810191909152604001600020556001016112f3565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561158d578181015183820152602001611575565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156115cc5781810151838201526020016115b4565b5050505090500194505050505060405180910390a45050505050565b6116078573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156116bf5781810151838201526020016116a7565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156116fe5781810151838201526020016116e6565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561173a578181015183820152602001611722565b50505050905090810190601f1680156117675780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561178c57600080fd5b5087f11580156117a0573d6000803e3d6000fd5b50505050506040513d60208110156117b757600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061326c603f913960400191505060405180910390fd5b6060808380602001905181019061186c9190612a51565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906118a483604161207e565b90508181108015906118b857508160640181105b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612e5a565b600061192a8683878051906020012060405160200161190f93929190612b46565b6040516020818303038152906040528051906020012061220f565b9050606086838760405160200161194393929190612b6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916119ce91612f14565b60405180910390a26119e289838388610a69565b611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612d43565b50505050509392505050565b6000611a338260600151611fc1565b60f81c905060028110611a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612eb7565b60008160ff166002811115611a8357fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff1615611ab9578660400151611abb565b335b92506000856002811115611acb57fe5b1415611bca578660600151806020019051810190611ae99190612545565b909450915073ffffffffffffffffffffffffffffffffffffffff8416301415611b3a57611b1888848484611ccd565b611b358884845a8560405180602001604052806000815250611dd0565b611bc5565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a90611b92908b90879087908790600401612bd5565b600060405180830381600087803b158015611bac57600080fd5b505af1158015611bc0573d6000803e3d6000fd5b505050505b611cc3565b8660600151806020019051810190611be29190612529565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90611c3b908b9087908690600401612ba4565b602060405180830381600087803b158015611c5557600080fd5b505af1158015611c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d91906129f5565b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612da0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320858452909152902054611d0690826120e6565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020818152604080832087845282528083209490945591861681528082528281208582529091522054611d56908261215d565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b611def8573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ea8578181015183820152602001611e90565b50505050905090810190601f168015611ed55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b158015611ef857600080fd5b5087f1158015611f0c573d6000803e3d6000fd5b50505050506040513d6020811015611f2357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806132ab603a913960400191505060405180910390fd5b60008082511161201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061302e6037913960400191505060405180910390fd5b8160018351038151811061202c57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b600081602001835110156120dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806132e5603c913960400191505060405180910390fd5b50016020015190565b60008282111561215757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156121d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906121d157507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b602083106122dc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161229f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f83011261238c578081fd5b813561239f61239a82612f41565b612f1d565b8181529150602080830190848101818402860182018710156123c057600080fd5b60005b848110156123df578135845292820192908201906001016123c3565b505050505092915050565b600082601f8301126123fa578081fd5b813561240861239a82612f5f565b915080825283602082850101111561241f57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612448578081fd5b815161245661239a82612f5f565b915080825283602082850101111561246d57600080fd5b61247e816020840160208601612f9f565b5092915050565b600060808284031215612496578081fd5b6040516080810167ffffffffffffffff82821081831117156124b457fe5b816040528293508451835260208501516020840152604085015191506124d982612fcf565b81604084015260608501519150808211156124f357600080fd5b5061250085828601612438565b6060830152505092915050565b60006020828403121561251e578081fd5b81356121d181612fcf565b60006020828403121561253a578081fd5b81516121d181612fcf565b60008060408385031215612557578081fd5b825161256281612fcf565b6020939093015192949293505050565b60008060408385031215612584578182fd5b823561258f81612fcf565b9150602083013561259f81612fcf565b809150509250929050565b60008060008060008060c087890312156125c2578182fd5b86356125cd81612fcf565b955060208701356125dd81612fcf565b9450604087013567ffffffffffffffff808211156125f9578384fd5b6126058a838b0161237c565b9550606089013591508082111561261a578384fd5b6126268a838b0161237c565b94506080890135915061263882612ff4565b90925060a0880135908082111561264d578283fd5b5061265a89828a016123ea565b9150509295509295509295565b600080600080600060a0868803121561267e578081fd5b853561268981612fcf565b9450602086013561269981612fcf565b9350604086013567ffffffffffffffff808211156126b5578283fd5b6126c189838a0161237c565b945060608801359150808211156126d6578283fd5b6126e289838a0161237c565b935060808801359150808211156126f7578283fd5b50612704888289016123ea565b9150509295509295909350565b600080600080600060a08688031215612728578081fd5b853561273381612fcf565b9450602086013561274381612fcf565b9350604086013561275381612ff4565b9250606086013561276381612ff4565b9150608086013567ffffffffffffffff81111561277e578182fd5b612704888289016123ea565b60008060008060008060c087890312156127a2578384fd5b86356127ad81612fcf565b955060208701356127bd81612fcf565b9450604087013593506060870135925060808701356127db81612ff4565b915060a087013567ffffffffffffffff8111156127f6578182fd5b61265a89828a016123ea565b600080600080600060a08688031215612819578283fd5b853561282481612fcf565b9450602086013561283481612fcf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561277e578182fd5b6000806040838503121561286f578182fd5b823561287a81612fcf565b9150602083013561259f81612ff4565b6000806000806080858703121561289f578182fd5b84356128aa81612fcf565b935060208501359250604085013567ffffffffffffffff808211156128cd578384fd5b6128d9888389016123ea565b935060608701359150808211156128ee578283fd5b506128fb878288016123ea565b91505092959194509250565b60008060408385031215612919578182fd5b823561292481612fcf565b946020939093013593505050565b60008060408385031215612944578182fd5b823567ffffffffffffffff8082111561295b578384fd5b818501915085601f83011261296e578384fd5b813561297c61239a82612f41565b80828252602080830192508086018a82838702890101111561299c578889fd5b8896505b848710156129c75780356129b381612fcf565b8452600196909601959281019281016129a0565b5090965087013593505050808211156129de578283fd5b506129eb8582860161237c565b9150509250929050565b600060208284031215612a06578081fd5b81516121d181612ff4565b600060208284031215612a22578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121d1578182fd5b60008060408385031215612a63578182fd5b825167ffffffffffffffff80821115612a7a578384fd5b612a8686838701612438565b93506020850151915080821115612a9b578283fd5b506129eb85828601612438565b600060208284031215612ab9578081fd5b815167ffffffffffffffff811115612acf578182fd5b61124284828501612485565b60008060408385031215612aed578182fd5b825167ffffffffffffffff80821115612b04578384fd5b612a8686838701612485565b815160009082906020808601845b83811015612b3a57815185529382019390820190600101612b1e565b50929695505050505050565b60008451612b58818460208901612f9f565b91909101928352506020820152604001919050565b60008451612b7f818460208901612f9f565b82018481528351612b97816020808501908801612f9f565b0160200195945050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b81811015612c5257835183529284019291840191600101612c36565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612f3957fe5b604052919050565b600067ffffffffffffffff821115612f5557fe5b5060209081020190565b600067ffffffffffffffff821115612f7357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612fba578181015183820152602001612fa2565b83811115612fc9576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ff157600080fd5b50565b8015158114612ff157600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a2646970667358221220f4c7476882d4d2ee082a3c5ffbca34153b801c91b645155a177647fac534e14664736f6c63430007040033",
"linkReferences": {},
"deployedLinkReferences": {}
}