gn-contracts 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  3. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol/ERC20Burnable.dbg.json +1 -1
  5. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  6. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  7. package/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  8. package/artifacts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  9. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  10. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json +1 -1
  11. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC4906Upgradeable.sol/IERC4906Upgradeable.dbg.json +1 -1
  12. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json +1 -1
  13. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json +1 -1
  14. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json +1 -1
  15. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  16. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  17. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +1 -1
  18. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol/ERC721Upgradeable.dbg.json +1 -1
  19. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol/IERC721ReceiverUpgradeable.dbg.json +1 -1
  20. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol/IERC721Upgradeable.dbg.json +1 -1
  21. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol/ERC721EnumerableUpgradeable.dbg.json +1 -1
  22. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol/ERC721URIStorageUpgradeable.dbg.json +1 -1
  23. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol/IERC721EnumerableUpgradeable.dbg.json +1 -1
  24. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +1 -1
  25. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  26. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  27. package/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json +1 -1
  28. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  29. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  30. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  31. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  32. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json +1 -1
  33. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol/SignedMathUpgradeable.dbg.json +1 -1
  34. package/artifacts/build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json +1 -0
  35. package/artifacts/build-info/5c571e0d4e969428dca2c8e1dbdb7c69.json +1 -0
  36. package/artifacts/build-info/{44138e8f5cba15b8d9fb0b0302f6f9cc.json → c4a06dd4847cedb406adc5e447a2e29d.json} +1 -1
  37. package/artifacts/contracts/CROWD.sol/CROWD.dbg.json +1 -1
  38. package/artifacts/contracts/CUSDT.sol/CUSDT.dbg.json +1 -1
  39. package/artifacts/contracts/NFT.sol/NFT.dbg.json +1 -1
  40. package/artifacts/contracts/NFTFounder.sol/NFTFounder.dbg.json +1 -1
  41. package/artifacts/contracts/NFTGenesis.sol/NFTGenesis.dbg.json +1 -1
  42. package/artifacts/contracts/Network.sol/Network.dbg.json +1 -1
  43. package/artifacts/contracts/Swap.sol/Swap.dbg.json +1 -1
  44. package/artifacts/contracts/Swap.sol/Swap.json +28 -2
  45. package/artifacts/contracts/USDT.sol/USDT.dbg.json +1 -1
  46. package/artifacts/contracts/lib/AccessControl.sol/AccessControl.dbg.json +1 -1
  47. package/artifacts/contracts/lib/NFTGetter.sol/NFTGetter.dbg.json +1 -1
  48. package/artifacts/contracts/lib/NFTHelpers.sol/NFTHelpers.dbg.json +1 -1
  49. package/artifacts/contracts/lib/ValhallaBlackList.sol/ValhallaBlackList.dbg.json +1 -1
  50. package/artifacts/contracts/lib/ValhallaPool.sol/ValhallaPool.dbg.json +1 -1
  51. package/contracts/Swap.sol +57 -33
  52. package/package.json +1 -1
  53. package/typechain-types/contracts/Swap.ts +70 -0
  54. package/typechain-types/factories/contracts/Swap__factory.ts +27 -1
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -381,6 +381,32 @@
381
381
  "stateMutability": "nonpayable",
382
382
  "type": "function"
383
383
  },
384
+ {
385
+ "inputs": [
386
+ {
387
+ "internalType": "uint256",
388
+ "name": "_amount",
389
+ "type": "uint256"
390
+ }
391
+ ],
392
+ "name": "swapToUSDTFromCROWD",
393
+ "outputs": [],
394
+ "stateMutability": "nonpayable",
395
+ "type": "function"
396
+ },
397
+ {
398
+ "inputs": [
399
+ {
400
+ "internalType": "uint256",
401
+ "name": "_amount",
402
+ "type": "uint256"
403
+ }
404
+ ],
405
+ "name": "swapToUSDTFromCUSDT",
406
+ "outputs": [],
407
+ "stateMutability": "nonpayable",
408
+ "type": "function"
409
+ },
384
410
  {
385
411
  "inputs": [
386
412
  {
@@ -452,8 +478,8 @@
452
478
  "type": "function"
453
479
  }
454
480
  ],
455
- "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051611c60610118600039600081816105d001528181610610015281816107da0152818161081a01526109fd0152611c606000f3fe60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063ca7bb3f511610064578063ca7bb3f514610314578063d4fd0fd314610334578063e332d98f14610354578063f2fde38b14610374578063f9ec424a1461039457600080fd5b80638da5cb5b14610276578063a515aee614610294578063b6247408146102b4578063bcff5ed7146102d4578063c0c53b8b146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101e957806352375bb1146101fc57806352d1902d1461022c5780636f3550d214610241578063715018a61461026157600080fd5b80632339c2da146101245780632f48ab7d1461014f57806332bd3720146101875780633659cfe6146101a95780633ea521ef146101c9575b600080fd5b34801561013057600080fd5b50681b1ae4d6e2ef5000005b6040519081526020015b60405180910390f35b34801561015b57600080fd5b5060c95461016f906001600160a01b031681565b6040516001600160a01b039091168152602001610146565b34801561019357600080fd5b506101a76101a2366004611824565b6103af565b005b3480156101b557600080fd5b506101a76101c4366004611852565b6105c6565b3480156101d557600080fd5b506101a76101e4366004611824565b6106a5565b6101a76101f736600461188c565b6107d0565b34801561020857600080fd5b5061021161089c565b60408051938452602084019290925290820152606001610146565b34801561023857600080fd5b5061013c6109f0565b34801561024d57600080fd5b506101a761025c366004611824565b610aa3565b34801561026d57600080fd5b506101a7610b8e565b34801561028257600080fd5b506033546001600160a01b031661016f565b3480156102a057600080fd5b506101a76102af366004611824565b610ba2565b3480156102c057600080fd5b506101a76102cf366004611824565b610c86565b3480156102e057600080fd5b506101a76102ef366004611824565b610df2565b34801561030057600080fd5b506101a761030f366004611950565b610fed565b34801561032057600080fd5b5060cb5461016f906001600160a01b031681565b34801561034057600080fd5b5060ca5461016f906001600160a01b031681565b34801561036057600080fd5b506101a761036f366004611824565b611146565b34801561038057600080fd5b506101a761038f366004611852565b6112b2565b3480156103a057600080fd5b50670de0b6b3a764000061013c565b60006103bd826101f461199b565b60cb546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042e91906119c0565b10156104755760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d08141bdbdb607a1b60448201526064015b60405180910390fd5b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906104a9903390309087906004016119d9565b6020604051808303816000875af11580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ec91906119fd565b5060cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119fd565b5060c95460cb54604080516001600160a01b03938416815292909116602083015281018390523360608201524260808201527f06dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313a9060a0015b60405180910390a15050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361060e5760405162461bcd60e51b815260040161046c90611a1f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610657600080516020611be4833981519152546001600160a01b031690565b6001600160a01b03161461067d5760405162461bcd60e51b815260040161046c90611a6b565b61068681611328565b604080516000808252602082019092526106a291839190611330565b50565b6106ad6114a0565b600081116106cd5760405162461bcd60e51b815260040161046c90611ab7565b60c9546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073991906119c0565b10156107575760405162461bcd60e51b815260040161046c90611aee565b60c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc91906119fd565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108185760405162461bcd60e51b815260040161046c90611a1f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610861600080516020611be4833981519152546001600160a01b031690565b6001600160a01b0316146108875760405162461bcd60e51b815260040161046c90611a6b565b61089082611328565b6107cc82826001611330565b60c9546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906119c0565b60ca546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097991906119c0565b60cb546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e591906119c0565b925092509250909192565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161046c565b50600080516020611be483398151915290565b610aab6114a0565b60008111610acb5760405162461bcd60e51b815260040161046c90611ab7565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610aff903390309086906004016119d9565b6020604051808303816000875af1158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4291906119fd565b5060cb54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250565b610b966114a0565b610ba060006114fa565b565b610baa6114a0565b60008111610bca5760405162461bcd60e51b815260040161046c90611ab7565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610bfe903390309086906004016119d9565b6020604051808303816000875af1158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4191906119fd565b5060ca54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca9101610b83565b610c8e6114a0565b60008111610cae5760405162461bcd60e51b815260040161046c90611ab7565b60cb546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a91906119c0565b1015610d385760405162461bcd60e51b815260040161046c90611aee565b60cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad91906119fd565b5060cb54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610b83565b60ca546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906119c0565b1015610ea45760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d08141bdbdb607a1b604482015260640161046c565b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610ed8903390309087906004016119d9565b6020604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b91906119fd565b5060ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9191906119fd565b5060c95460ca54604080516001600160a01b03938416815292909116602083015281018390523360608201524260808201527f06dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313a9060a0016105ba565b600054610100900460ff161580801561100d5750600054600160ff909116105b806110275750303b158015611027575060005460ff166001145b61108a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161046c565b6000805460ff1916600117905580156110ad576000805461ff0019166101001790555b6110b561154c565b6110bd61157b565b60c980546001600160a01b038087166001600160a01b03199283161790925560ca805486841690831617905560cb8054928516929091169190911790558015611140576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b61114e6114a0565b6000811161116e5760405162461bcd60e51b815260040161046c90611ab7565b60ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906119c0565b10156111f85760405162461bcd60e51b815260040161046c90611aee565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d91906119fd565b5060ca54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610b83565b6112ba6114a0565b6001600160a01b03811661131f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046c565b6106a2816114fa565b6106a26114a0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136857611363836115a2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c2575060408051601f3d908101601f191682019092526113bf918101906119c0565b60015b6114255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161046c565b600080516020611be483398151915281146114945760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161046c565b5061136383838361163e565b6033546001600160a01b03163314610ba05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166115735760405162461bcd60e51b815260040161046c90611b25565b610ba0611663565b600054610100900460ff16610ba05760405162461bcd60e51b815260040161046c90611b25565b6001600160a01b0381163b61160f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161046c565b600080516020611be483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61164783611693565b6000825111806116545750805b156113635761114083836116d3565b600054610100900460ff1661168a5760405162461bcd60e51b815260040161046c90611b25565b610ba0336114fa565b61169c816115a2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606116f88383604051806060016040528060278152602001611c0460279139611701565b90505b92915050565b6060600080856001600160a01b03168560405161171e9190611b94565b600060405180830381855af49150503d8060008114611759576040519150601f19603f3d011682016040523d82523d6000602084013e61175e565b606091505b509150915061176f86838387611779565b9695505050505050565b606083156117e85782516000036117e1576001600160a01b0385163b6117e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046c565b50816117f2565b6117f283836117fa565b949350505050565b81511561180a5781518083602001fd5b8060405162461bcd60e51b815260040161046c9190611bb0565b60006020828403121561183657600080fd5b5035919050565b6001600160a01b03811681146106a257600080fd5b60006020828403121561186457600080fd5b813561186f8161183d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561189f57600080fd5b82356118aa8161183d565b9150602083013567ffffffffffffffff808211156118c757600080fd5b818501915085601f8301126118db57600080fd5b8135818111156118ed576118ed611876565b604051601f8201601f19908116603f0116810190838211818310171561191557611915611876565b8160405282815288602084870101111561192e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060006060848603121561196557600080fd5b83356119708161183d565b925060208401356119808161183d565b915060408401356119908161183d565b809150509250925092565b80820281158282048414176116fb57634e487b7160e01b600052601160045260246000fd5b6000602082840312156119d257600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215611a0f57600080fd5b8151801515811461186f57600080fd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604082015260600190565b60208082526019908201527f496e73756666696369656e7420706f6f6c2062616c616e636500000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611b8b578181015183820152602001611b73565b50506000910152565b60008251611ba6818460208701611b70565b9190910192915050565b6020815260008251806020840152611bcf816040850160208701611b70565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220279cf1e280177b981ce8a80d12f1b0d9ae235706cda6eae55c40e18e7a80171664736f6c63430008110033",
456
- "deployedBytecode": "0x60806040526004361061011f5760003560e01c80638da5cb5b116100a0578063ca7bb3f511610064578063ca7bb3f514610314578063d4fd0fd314610334578063e332d98f14610354578063f2fde38b14610374578063f9ec424a1461039457600080fd5b80638da5cb5b14610276578063a515aee614610294578063b6247408146102b4578063bcff5ed7146102d4578063c0c53b8b146102f457600080fd5b80634f1ef286116100e75780634f1ef286146101e957806352375bb1146101fc57806352d1902d1461022c5780636f3550d214610241578063715018a61461026157600080fd5b80632339c2da146101245780632f48ab7d1461014f57806332bd3720146101875780633659cfe6146101a95780633ea521ef146101c9575b600080fd5b34801561013057600080fd5b50681b1ae4d6e2ef5000005b6040519081526020015b60405180910390f35b34801561015b57600080fd5b5060c95461016f906001600160a01b031681565b6040516001600160a01b039091168152602001610146565b34801561019357600080fd5b506101a76101a2366004611824565b6103af565b005b3480156101b557600080fd5b506101a76101c4366004611852565b6105c6565b3480156101d557600080fd5b506101a76101e4366004611824565b6106a5565b6101a76101f736600461188c565b6107d0565b34801561020857600080fd5b5061021161089c565b60408051938452602084019290925290820152606001610146565b34801561023857600080fd5b5061013c6109f0565b34801561024d57600080fd5b506101a761025c366004611824565b610aa3565b34801561026d57600080fd5b506101a7610b8e565b34801561028257600080fd5b506033546001600160a01b031661016f565b3480156102a057600080fd5b506101a76102af366004611824565b610ba2565b3480156102c057600080fd5b506101a76102cf366004611824565b610c86565b3480156102e057600080fd5b506101a76102ef366004611824565b610df2565b34801561030057600080fd5b506101a761030f366004611950565b610fed565b34801561032057600080fd5b5060cb5461016f906001600160a01b031681565b34801561034057600080fd5b5060ca5461016f906001600160a01b031681565b34801561036057600080fd5b506101a761036f366004611824565b611146565b34801561038057600080fd5b506101a761038f366004611852565b6112b2565b3480156103a057600080fd5b50670de0b6b3a764000061013c565b60006103bd826101f461199b565b60cb546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042e91906119c0565b10156104755760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d08141bdbdb607a1b60448201526064015b60405180910390fd5b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906104a9903390309087906004016119d9565b6020604051808303816000875af11580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ec91906119fd565b5060cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561053e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056291906119fd565b5060c95460cb54604080516001600160a01b03938416815292909116602083015281018390523360608201524260808201527f06dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313a9060a0015b60405180910390a15050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361060e5760405162461bcd60e51b815260040161046c90611a1f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610657600080516020611be4833981519152546001600160a01b031690565b6001600160a01b03161461067d5760405162461bcd60e51b815260040161046c90611a6b565b61068681611328565b604080516000808252602082019092526106a291839190611330565b50565b6106ad6114a0565b600081116106cd5760405162461bcd60e51b815260040161046c90611ab7565b60c9546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073991906119c0565b10156107575760405162461bcd60e51b815260040161046c90611aee565b60c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc91906119fd565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108185760405162461bcd60e51b815260040161046c90611a1f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610861600080516020611be4833981519152546001600160a01b031690565b6001600160a01b0316146108875760405162461bcd60e51b815260040161046c90611a6b565b61089082611328565b6107cc82826001611330565b60c9546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906119c0565b60ca546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097991906119c0565b60cb546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156109c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e591906119c0565b925092509250909192565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a905760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161046c565b50600080516020611be483398151915290565b610aab6114a0565b60008111610acb5760405162461bcd60e51b815260040161046c90611ab7565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610aff903390309086906004016119d9565b6020604051808303816000875af1158015610b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4291906119fd565b5060cb54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250565b610b966114a0565b610ba060006114fa565b565b610baa6114a0565b60008111610bca5760405162461bcd60e51b815260040161046c90611ab7565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610bfe903390309086906004016119d9565b6020604051808303816000875af1158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4191906119fd565b5060ca54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca9101610b83565b610c8e6114a0565b60008111610cae5760405162461bcd60e51b815260040161046c90611ab7565b60cb546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a91906119c0565b1015610d385760405162461bcd60e51b815260040161046c90611aee565b60cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad91906119fd565b5060cb54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610b83565b60ca546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906119c0565b1015610ea45760405162461bcd60e51b8152602060048201526011602482015270125b9cdd59999a58da595b9d08141bdbdb607a1b604482015260640161046c565b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610ed8903390309087906004016119d9565b6020604051808303816000875af1158015610ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1b91906119fd565b5060ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9191906119fd565b5060c95460ca54604080516001600160a01b03938416815292909116602083015281018390523360608201524260808201527f06dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313a9060a0016105ba565b600054610100900460ff161580801561100d5750600054600160ff909116105b806110275750303b158015611027575060005460ff166001145b61108a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161046c565b6000805460ff1916600117905580156110ad576000805461ff0019166101001790555b6110b561154c565b6110bd61157b565b60c980546001600160a01b038087166001600160a01b03199283161790925560ca805486841690831617905560cb8054928516929091169190911790558015611140576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b61114e6114a0565b6000811161116e5760405162461bcd60e51b815260040161046c90611ab7565b60ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906119c0565b10156111f85760405162461bcd60e51b815260040161046c90611aee565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d91906119fd565b5060ca54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610b83565b6112ba6114a0565b6001600160a01b03811661131f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046c565b6106a2816114fa565b6106a26114a0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136857611363836115a2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113c2575060408051601f3d908101601f191682019092526113bf918101906119c0565b60015b6114255760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161046c565b600080516020611be483398151915281146114945760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161046c565b5061136383838361163e565b6033546001600160a01b03163314610ba05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166115735760405162461bcd60e51b815260040161046c90611b25565b610ba0611663565b600054610100900460ff16610ba05760405162461bcd60e51b815260040161046c90611b25565b6001600160a01b0381163b61160f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161046c565b600080516020611be483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61164783611693565b6000825111806116545750805b156113635761114083836116d3565b600054610100900460ff1661168a5760405162461bcd60e51b815260040161046c90611b25565b610ba0336114fa565b61169c816115a2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606116f88383604051806060016040528060278152602001611c0460279139611701565b90505b92915050565b6060600080856001600160a01b03168560405161171e9190611b94565b600060405180830381855af49150503d8060008114611759576040519150601f19603f3d011682016040523d82523d6000602084013e61175e565b606091505b509150915061176f86838387611779565b9695505050505050565b606083156117e85782516000036117e1576001600160a01b0385163b6117e15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046c565b50816117f2565b6117f283836117fa565b949350505050565b81511561180a5781518083602001fd5b8060405162461bcd60e51b815260040161046c9190611bb0565b60006020828403121561183657600080fd5b5035919050565b6001600160a01b03811681146106a257600080fd5b60006020828403121561186457600080fd5b813561186f8161183d565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561189f57600080fd5b82356118aa8161183d565b9150602083013567ffffffffffffffff808211156118c757600080fd5b818501915085601f8301126118db57600080fd5b8135818111156118ed576118ed611876565b604051601f8201601f19908116603f0116810190838211818310171561191557611915611876565b8160405282815288602084870101111561192e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060006060848603121561196557600080fd5b83356119708161183d565b925060208401356119808161183d565b915060408401356119908161183d565b809150509250925092565b80820281158282048414176116fb57634e487b7160e01b600052601160045260246000fd5b6000602082840312156119d257600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215611a0f57600080fd5b8151801515811461186f57600080fd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604082015260600190565b60208082526019908201527f496e73756666696369656e7420706f6f6c2062616c616e636500000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611b8b578181015183820152602001611b73565b50506000910152565b60008251611ba6818460208701611b70565b9190910192915050565b6020815260008251806020840152611bcf816040850160208701611b70565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220279cf1e280177b981ce8a80d12f1b0d9ae235706cda6eae55c40e18e7a80171664736f6c63430008110033",
481
+ "bytecode": "0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100e1565b600054610100900460ff161561008e5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100df576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051612043610118600039600081816107a8015281816107e8015281816109b2015281816109f20152610bd501526120436000f3fe6080604052600436106101355760003560e01c80638da5cb5b116100ab578063ca7bb3f51161006f578063ca7bb3f51461034a578063d4fd0fd31461036a578063e332d98f1461038a578063edb94132146103aa578063f2fde38b146103ca578063f9ec424a146103ea57600080fd5b80638da5cb5b146102ac578063a515aee6146102ca578063b6247408146102ea578063bcff5ed71461030a578063c0c53b8b1461032a57600080fd5b80633ea521ef116100fd5780633ea521ef146101ff5780634f1ef2861461021f57806352375bb11461023257806352d1902d146102625780636f3550d214610277578063715018a61461029757600080fd5b80632339c2da1461013a5780632f48ab7d1461016557806332bd37201461019d5780633628f8d6146101bf5780633659cfe6146101df575b600080fd5b34801561014657600080fd5b50681b1ae4d6e2ef5000005b6040519081526020015b60405180910390f35b34801561017157600080fd5b5060c954610185906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b3480156101a957600080fd5b506101bd6101b8366004611b67565b610405565b005b3480156101cb57600080fd5b506101bd6101da366004611b67565b6105dc565b3480156101eb57600080fd5b506101bd6101fa366004611b95565b61079e565b34801561020b57600080fd5b506101bd61021a366004611b67565b61087d565b6101bd61022d366004611bcf565b6109a8565b34801561023e57600080fd5b50610247610a74565b6040805193845260208401929092529082015260600161015c565b34801561026e57600080fd5b50610152610bc8565b34801561028357600080fd5b506101bd610292366004611b67565b610c7b565b3480156102a357600080fd5b506101bd610d66565b3480156102b857600080fd5b506033546001600160a01b0316610185565b3480156102d657600080fd5b506101bd6102e5366004611b67565b610d7a565b3480156102f657600080fd5b506101bd610305366004611b67565b610e5e565b34801561031657600080fd5b506101bd610325366004611b67565b610fca565b34801561033657600080fd5b506101bd610345366004611c93565b61117d565b34801561035657600080fd5b5060cb54610185906001600160a01b031681565b34801561037657600080fd5b5060ca54610185906001600160a01b031681565b34801561039657600080fd5b506101bd6103a5366004611b67565b6112d6565b3480156103b657600080fd5b506101bd6103c5366004611b67565b611442565b3480156103d657600080fd5b506101bd6103e5366004611b95565b6115f5565b3480156103f657600080fd5b50670de0b6b3a7640000610152565b6000610413826101f4611cde565b60cb546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104849190611d03565b10156104ab5760405162461bcd60e51b81526004016104a290611d1c565b60405180910390fd5b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906104df90339030908790600401611d47565b6020604051808303816000875af11580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190611d6b565b5060cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611d6b565b5060c95460cb54604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b60405180910390a15050565b60006105ea6101f483611dc0565b60c9546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065b9190611d03565b10156106795760405162461bcd60e51b81526004016104a290611d1c565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906106ad90339030908790600401611d47565b6020604051808303816000875af11580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f09190611d6b565b5060c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611d6b565b5060cb5460c954604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107e65760405162461bcd60e51b81526004016104a290611de2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661082f600080516020611fa7833981519152546001600160a01b031690565b6001600160a01b0316146108555760405162461bcd60e51b81526004016104a290611e2e565b61085e8161166b565b6040805160008082526020820190925261087a91839190611673565b50565b6108856117e3565b600081116108a55760405162461bcd60e51b81526004016104a290611e7a565b60c9546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190611d03565b101561092f5760405162461bcd60e51b81526004016104a290611eb1565b60c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190611d6b565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109f05760405162461bcd60e51b81526004016104a290611de2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a39600080516020611fa7833981519152546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016104a290611e2e565b610a688261166b565b6109a482826001611673565b60c9546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611d03565b60ca546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b519190611d03565b60cb546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190611d03565b925092509250909192565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c685760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104a2565b50600080516020611fa783398151915290565b610c836117e3565b60008111610ca35760405162461bcd60e51b81526004016104a290611e7a565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610cd790339030908690600401611d47565b6020604051808303816000875af1158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190611d6b565b5060cb54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250565b610d6e6117e3565b610d78600061183d565b565b610d826117e3565b60008111610da25760405162461bcd60e51b81526004016104a290611e7a565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610dd690339030908690600401611d47565b6020604051808303816000875af1158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190611d6b565b5060ca54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca9101610d5b565b610e666117e3565b60008111610e865760405162461bcd60e51b81526004016104a290611e7a565b60cb546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef29190611d03565b1015610f105760405162461bcd60e51b81526004016104a290611eb1565b60cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f859190611d6b565b5060cb54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610d5b565b60ca546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611d03565b10156110585760405162461bcd60e51b81526004016104a290611d1c565b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061108c90339030908790600401611d47565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190611d6b565b5060ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190611d6b565b5060c95460ca54604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104a2565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b61124561188f565b61124d6118be565b60c980546001600160a01b038087166001600160a01b03199283161790925560ca805486841690831617905560cb80549285169290911691909117905580156112d0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6112de6117e3565b600081116112fe5760405162461bcd60e51b81526004016104a290611e7a565b60ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190611d03565b10156113885760405162461bcd60e51b81526004016104a290611eb1565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd9190611d6b565b5060ca54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610d5b565b60c9546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b29190611d03565b10156114d05760405162461bcd60e51b81526004016104a290611d1c565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061150490339030908790600401611d47565b6020604051808303816000875af1158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611d6b565b5060c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd9190611d6b565b5060ca5460c954604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b6115fd6117e3565b6001600160a01b0381166116625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a2565b61087a8161183d565b61087a6117e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116ab576116a6836118e5565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611705575060408051601f3d908101601f1916820190925261170291810190611d03565b60015b6117685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104a2565b600080516020611fa783398151915281146117d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104a2565b506116a6838383611981565b6033546001600160a01b03163314610d785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166118b65760405162461bcd60e51b81526004016104a290611ee8565b610d786119a6565b600054610100900460ff16610d785760405162461bcd60e51b81526004016104a290611ee8565b6001600160a01b0381163b6119525760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104a2565b600080516020611fa783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61198a836119d6565b6000825111806119975750805b156116a6576112d08383611a16565b600054610100900460ff166119cd5760405162461bcd60e51b81526004016104a290611ee8565b610d783361183d565b6119df816118e5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611a3b8383604051806060016040528060278152602001611fc760279139611a44565b90505b92915050565b6060600080856001600160a01b031685604051611a619190611f57565b600060405180830381855af49150503d8060008114611a9c576040519150601f19603f3d011682016040523d82523d6000602084013e611aa1565b606091505b5091509150611ab286838387611abc565b9695505050505050565b60608315611b2b578251600003611b24576001600160a01b0385163b611b245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104a2565b5081611b35565b611b358383611b3d565b949350505050565b815115611b4d5781518083602001fd5b8060405162461bcd60e51b81526004016104a29190611f73565b600060208284031215611b7957600080fd5b5035919050565b6001600160a01b038116811461087a57600080fd5b600060208284031215611ba757600080fd5b8135611bb281611b80565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611be257600080fd5b8235611bed81611b80565b9150602083013567ffffffffffffffff80821115611c0a57600080fd5b818501915085601f830112611c1e57600080fd5b813581811115611c3057611c30611bb9565b604051601f8201601f19908116603f01168101908382118183101715611c5857611c58611bb9565b81604052828152886020848701011115611c7157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215611ca857600080fd5b8335611cb381611b80565b92506020840135611cc381611b80565b91506040840135611cd381611b80565b809150509250925092565b8082028115828204841417611a3e57634e487b7160e01b600052601160045260246000fd5b600060208284031215611d1557600080fd5b5051919050565b602080825260119082015270125b9cdd59999a58da595b9d08141bdbdb607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215611d7d57600080fd5b81518015158114611bb257600080fd5b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b600082611ddd57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604082015260600190565b60208082526019908201527f496e73756666696369656e7420706f6f6c2062616c616e636500000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611f4e578181015183820152602001611f36565b50506000910152565b60008251611f69818460208701611f33565b9190910192915050565b6020815260008251806020840152611f92816040850160208701611f33565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656406dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313aa26469706673582212209e8833c27d90a23ea189a4fe9db7373246d9068e96fd65f72bfb5fae1ebc3d6164736f6c63430008110033",
482
+ "deployedBytecode": "0x6080604052600436106101355760003560e01c80638da5cb5b116100ab578063ca7bb3f51161006f578063ca7bb3f51461034a578063d4fd0fd31461036a578063e332d98f1461038a578063edb94132146103aa578063f2fde38b146103ca578063f9ec424a146103ea57600080fd5b80638da5cb5b146102ac578063a515aee6146102ca578063b6247408146102ea578063bcff5ed71461030a578063c0c53b8b1461032a57600080fd5b80633ea521ef116100fd5780633ea521ef146101ff5780634f1ef2861461021f57806352375bb11461023257806352d1902d146102625780636f3550d214610277578063715018a61461029757600080fd5b80632339c2da1461013a5780632f48ab7d1461016557806332bd37201461019d5780633628f8d6146101bf5780633659cfe6146101df575b600080fd5b34801561014657600080fd5b50681b1ae4d6e2ef5000005b6040519081526020015b60405180910390f35b34801561017157600080fd5b5060c954610185906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b3480156101a957600080fd5b506101bd6101b8366004611b67565b610405565b005b3480156101cb57600080fd5b506101bd6101da366004611b67565b6105dc565b3480156101eb57600080fd5b506101bd6101fa366004611b95565b61079e565b34801561020b57600080fd5b506101bd61021a366004611b67565b61087d565b6101bd61022d366004611bcf565b6109a8565b34801561023e57600080fd5b50610247610a74565b6040805193845260208401929092529082015260600161015c565b34801561026e57600080fd5b50610152610bc8565b34801561028357600080fd5b506101bd610292366004611b67565b610c7b565b3480156102a357600080fd5b506101bd610d66565b3480156102b857600080fd5b506033546001600160a01b0316610185565b3480156102d657600080fd5b506101bd6102e5366004611b67565b610d7a565b3480156102f657600080fd5b506101bd610305366004611b67565b610e5e565b34801561031657600080fd5b506101bd610325366004611b67565b610fca565b34801561033657600080fd5b506101bd610345366004611c93565b61117d565b34801561035657600080fd5b5060cb54610185906001600160a01b031681565b34801561037657600080fd5b5060ca54610185906001600160a01b031681565b34801561039657600080fd5b506101bd6103a5366004611b67565b6112d6565b3480156103b657600080fd5b506101bd6103c5366004611b67565b611442565b3480156103d657600080fd5b506101bd6103e5366004611b95565b6115f5565b3480156103f657600080fd5b50670de0b6b3a7640000610152565b6000610413826101f4611cde565b60cb546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104849190611d03565b10156104ab5760405162461bcd60e51b81526004016104a290611d1c565b60405180910390fd5b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906104df90339030908790600401611d47565b6020604051808303816000875af11580156104fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105229190611d6b565b5060cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105989190611d6b565b5060c95460cb54604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b60405180910390a15050565b60006105ea6101f483611dc0565b60c9546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065b9190611d03565b10156106795760405162461bcd60e51b81526004016104a290611d1c565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906106ad90339030908790600401611d47565b6020604051808303816000875af11580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f09190611d6b565b5060c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610742573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107669190611d6b565b5060cb5460c954604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107e65760405162461bcd60e51b81526004016104a290611de2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661082f600080516020611fa7833981519152546001600160a01b031690565b6001600160a01b0316146108555760405162461bcd60e51b81526004016104a290611e2e565b61085e8161166b565b6040805160008082526020820190925261087a91839190611673565b50565b6108856117e3565b600081116108a55760405162461bcd60e51b81526004016104a290611e7a565b60c9546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190611d03565b101561092f5760405162461bcd60e51b81526004016104a290611eb1565b60c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a49190611d6b565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109f05760405162461bcd60e51b81526004016104a290611de2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a39600080516020611fa7833981519152546001600160a01b031690565b6001600160a01b031614610a5f5760405162461bcd60e51b81526004016104a290611e2e565b610a688261166b565b6109a482826001611673565b60c9546040516370a0823160e01b8152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611d03565b60ca546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b519190611d03565b60cb546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190611d03565b925092509250909192565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c685760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104a2565b50600080516020611fa783398151915290565b610c836117e3565b60008111610ca35760405162461bcd60e51b81526004016104a290611e7a565b60cb546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610cd790339030908690600401611d47565b6020604051808303816000875af1158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190611d6b565b5060cb54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca91015b60405180910390a250565b610d6e6117e3565b610d78600061183d565b565b610d826117e3565b60008111610da25760405162461bcd60e51b81526004016104a290611e7a565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610dd690339030908690600401611d47565b6020604051808303816000875af1158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e199190611d6b565b5060ca54604080518381524260208201526001600160a01b03909216917f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca9101610d5b565b610e666117e3565b60008111610e865760405162461bcd60e51b81526004016104a290611e7a565b60cb546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef29190611d03565b1015610f105760405162461bcd60e51b81526004016104a290611eb1565b60cb5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f859190611d6b565b5060cb54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610d5b565b60ca546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a9190611d03565b10156110585760405162461bcd60e51b81526004016104a290611d1c565b60c9546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061108c90339030908790600401611d47565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190611d6b565b5060ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111459190611d6b565b5060c95460ca54604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104a2565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b61124561188f565b61124d6118be565b60c980546001600160a01b038087166001600160a01b03199283161790925560ca805486841690831617905560cb80549285169290911691909117905580156112d0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6112de6117e3565b600081116112fe5760405162461bcd60e51b81526004016104a290611e7a565b60ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136a9190611d03565b10156113885760405162461bcd60e51b81526004016104a290611eb1565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd9190611d6b565b5060ca54604080518381524260208201526001600160a01b03909216917f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e89101610d5b565b60c9546040516370a0823160e01b8152306004820152829182916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561148e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b29190611d03565b10156114d05760405162461bcd60e51b81526004016104a290611d1c565b60ca546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061150490339030908790600401611d47565b6020604051808303816000875af1158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611d6b565b5060c95460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bd9190611d6b565b5060ca5460c954604051600080516020611fee833981519152926105d0926001600160a01b0391821692911690869033904290611d8d565b6115fd6117e3565b6001600160a01b0381166116625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104a2565b61087a8161183d565b61087a6117e3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116ab576116a6836118e5565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611705575060408051601f3d908101601f1916820190925261170291810190611d03565b60015b6117685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104a2565b600080516020611fa783398151915281146117d75760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104a2565b506116a6838383611981565b6033546001600160a01b03163314610d785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166118b65760405162461bcd60e51b81526004016104a290611ee8565b610d786119a6565b600054610100900460ff16610d785760405162461bcd60e51b81526004016104a290611ee8565b6001600160a01b0381163b6119525760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104a2565b600080516020611fa783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61198a836119d6565b6000825111806119975750805b156116a6576112d08383611a16565b600054610100900460ff166119cd5760405162461bcd60e51b81526004016104a290611ee8565b610d783361183d565b6119df816118e5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611a3b8383604051806060016040528060278152602001611fc760279139611a44565b90505b92915050565b6060600080856001600160a01b031685604051611a619190611f57565b600060405180830381855af49150503d8060008114611a9c576040519150601f19603f3d011682016040523d82523d6000602084013e611aa1565b606091505b5091509150611ab286838387611abc565b9695505050505050565b60608315611b2b578251600003611b24576001600160a01b0385163b611b245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104a2565b5081611b35565b611b358383611b3d565b949350505050565b815115611b4d5781518083602001fd5b8060405162461bcd60e51b81526004016104a29190611f73565b600060208284031215611b7957600080fd5b5035919050565b6001600160a01b038116811461087a57600080fd5b600060208284031215611ba757600080fd5b8135611bb281611b80565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611be257600080fd5b8235611bed81611b80565b9150602083013567ffffffffffffffff80821115611c0a57600080fd5b818501915085601f830112611c1e57600080fd5b813581811115611c3057611c30611bb9565b604051601f8201601f19908116603f01168101908382118183101715611c5857611c58611bb9565b81604052828152886020848701011115611c7157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215611ca857600080fd5b8335611cb381611b80565b92506020840135611cc381611b80565b91506040840135611cd381611b80565b809150509250925092565b8082028115828204841417611a3e57634e487b7160e01b600052601160045260246000fd5b600060208284031215611d1557600080fd5b5051919050565b602080825260119082015270125b9cdd59999a58da595b9d08141bdbdb607a1b604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215611d7d57600080fd5b81518015158114611bb257600080fd5b6001600160a01b039586168152938516602085015260408401929092529092166060820152608081019190915260a00190565b600082611ddd57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252601d908201527f416d6f756e74206d7573742062652067726561746572207468616e2030000000604082015260600190565b60208082526019908201527f496e73756666696369656e7420706f6f6c2062616c616e636500000000000000604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015611f4e578181015183820152602001611f36565b50506000910152565b60008251611f69818460208701611f33565b9190910192915050565b6020815260008251806020840152611f92816040850160208701611f33565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656406dfb71517135bdd9f8e14b22a0e5662d388a7b5760ce9e8adb4856ad9f4313aa26469706673582212209e8833c27d90a23ea189a4fe9db7373246d9068e96fd65f72bfb5fae1ebc3d6164736f6c63430008110033",
457
483
  "linkReferences": {},
458
484
  "deployedLinkReferences": {}
459
485
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../build-info/c4a06dd4847cedb406adc5e447a2e29d.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../../build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../../build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../../build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../../build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/44138e8f5cba15b8d9fb0b0302f6f9cc.json"
3
+ "buildInfo": "../../../build-info/3b73b26b5bedaeb08a2c2823a85a9eb7.json"
4
4
  }
@@ -19,18 +19,10 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
19
19
  address _user,
20
20
  uint _timeStamp
21
21
  );
22
-
23
- event AddLiquidity(
24
- ERC20 indexed token,
25
- uint amount,
26
- uint timestamp
27
- );
28
-
29
- event RemoveLiquidity(
30
- ERC20 indexed token,
31
- uint amount,
32
- uint timestamp
33
- );
22
+
23
+ event AddLiquidity(ERC20 indexed token, uint amount, uint timestamp);
24
+
25
+ event RemoveLiquidity(ERC20 indexed token, uint amount, uint timestamp);
34
26
 
35
27
  ERC20 public usdt;
36
28
  ERC20 public cusdt;
@@ -47,7 +39,7 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
47
39
  cusdt = _cusdt;
48
40
  crowd = _crowd;
49
41
  }
50
-
42
+
51
43
  function swapToCUSDT(uint _amount) public {
52
44
  // USDT has 18 decimals. CUSDT has 18 decimals.
53
45
  // 1:1 ratio.
@@ -70,16 +62,39 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
70
62
  crowd.transfer(msg.sender, crowdAmount);
71
63
  emit SwapToken(usdt, crowd, _amount, msg.sender, block.timestamp);
72
64
  }
73
-
65
+
66
+ function swapToUSDTFromCUSDT(uint _amount) public {
67
+ // CUSDT has 18 decimals. USDT has 18 decimals.
68
+ // 1:1 ratio.
69
+ uint usdtAmount = _amount;
70
+ require(usdt.balanceOf(address(this)) >= usdtAmount, "Insufficient Pool");
71
+
72
+ cusdt.transferFrom(msg.sender, address(this), _amount);
73
+ usdt.transfer(msg.sender, usdtAmount);
74
+ emit SwapToken(cusdt, usdt, _amount, msg.sender, block.timestamp);
75
+ }
76
+
77
+ function swapToUSDTFromCROWD(uint _amount) public {
78
+ // 1 CROWD = 0.002 USDT -> 500 CROWD = 1 USDT.
79
+ // CROWD (18 dec) -> USDT (18 dec).
80
+ // Divider = 500.
81
+ uint usdtAmount = _amount / 500;
82
+ require(usdt.balanceOf(address(this)) >= usdtAmount, "Insufficient Pool");
83
+
84
+ crowd.transferFrom(msg.sender, address(this), _amount);
85
+ usdt.transfer(msg.sender, usdtAmount);
86
+ emit SwapToken(crowd, usdt, _amount, msg.sender, block.timestamp);
87
+ }
88
+
74
89
  /**
75
90
  * @notice Owner adds CUSDT liquidity to the pool
76
91
  * @param _amount Amount of CUSDT to add
77
92
  */
78
93
  function addLiquidityCUSDT(uint _amount) public onlyOwner {
79
94
  require(_amount > 0, "Amount must be greater than 0");
80
-
95
+
81
96
  cusdt.transferFrom(msg.sender, address(this), _amount);
82
-
97
+
83
98
  emit AddLiquidity(cusdt, _amount, block.timestamp);
84
99
  }
85
100
 
@@ -89,9 +104,9 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
89
104
  */
90
105
  function addLiquidityCROWD(uint _amount) public onlyOwner {
91
106
  require(_amount > 0, "Amount must be greater than 0");
92
-
107
+
93
108
  crowd.transferFrom(msg.sender, address(this), _amount);
94
-
109
+
95
110
  emit AddLiquidity(crowd, _amount, block.timestamp);
96
111
  }
97
112
 
@@ -101,10 +116,13 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
101
116
  */
102
117
  function removeLiquidityCUSDT(uint _amount) public onlyOwner {
103
118
  require(_amount > 0, "Amount must be greater than 0");
104
- require(cusdt.balanceOf(address(this)) >= _amount, "Insufficient pool balance");
105
-
119
+ require(
120
+ cusdt.balanceOf(address(this)) >= _amount,
121
+ "Insufficient pool balance"
122
+ );
123
+
106
124
  cusdt.transfer(msg.sender, _amount);
107
-
125
+
108
126
  emit RemoveLiquidity(cusdt, _amount, block.timestamp);
109
127
  }
110
128
 
@@ -114,10 +132,13 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
114
132
  */
115
133
  function removeLiquidityCROWD(uint _amount) public onlyOwner {
116
134
  require(_amount > 0, "Amount must be greater than 0");
117
- require(crowd.balanceOf(address(this)) >= _amount, "Insufficient pool balance");
118
-
135
+ require(
136
+ crowd.balanceOf(address(this)) >= _amount,
137
+ "Insufficient pool balance"
138
+ );
139
+
119
140
  crowd.transfer(msg.sender, _amount);
120
-
141
+
121
142
  emit RemoveLiquidity(crowd, _amount, block.timestamp);
122
143
  }
123
144
 
@@ -127,19 +148,22 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
127
148
  */
128
149
  function withdrawUSDT(uint _amount) public onlyOwner {
129
150
  require(_amount > 0, "Amount must be greater than 0");
130
- require(usdt.balanceOf(address(this)) >= _amount, "Insufficient pool balance");
131
-
151
+ require(
152
+ usdt.balanceOf(address(this)) >= _amount,
153
+ "Insufficient pool balance"
154
+ );
155
+
132
156
  usdt.transfer(msg.sender, _amount);
133
157
  }
134
-
158
+
135
159
  /**
136
160
  * @notice Get pool balances for all tokens
137
161
  */
138
- function getPoolBalances() public view returns (
139
- uint usdtBalance,
140
- uint cusdtBalance,
141
- uint crowdBalance
142
- ) {
162
+ function getPoolBalances()
163
+ public
164
+ view
165
+ returns (uint usdtBalance, uint cusdtBalance, uint crowdBalance)
166
+ {
143
167
  return (
144
168
  usdt.balanceOf(address(this)),
145
169
  cusdt.balanceOf(address(this)),
@@ -170,4 +194,4 @@ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
170
194
  function _authorizeUpgrade(
171
195
  address newImplementation
172
196
  ) internal override onlyOwner {}
173
- }
197
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gn-contracts",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -45,6 +45,8 @@ export interface SwapInterface extends utils.Interface {
45
45
  "renounceOwnership()": FunctionFragment;
46
46
  "swapToCROWD(uint256)": FunctionFragment;
47
47
  "swapToCUSDT(uint256)": FunctionFragment;
48
+ "swapToUSDTFromCROWD(uint256)": FunctionFragment;
49
+ "swapToUSDTFromCUSDT(uint256)": FunctionFragment;
48
50
  "transferOwnership(address)": FunctionFragment;
49
51
  "upgradeTo(address)": FunctionFragment;
50
52
  "upgradeToAndCall(address,bytes)": FunctionFragment;
@@ -69,6 +71,8 @@ export interface SwapInterface extends utils.Interface {
69
71
  | "renounceOwnership"
70
72
  | "swapToCROWD"
71
73
  | "swapToCUSDT"
74
+ | "swapToUSDTFromCROWD"
75
+ | "swapToUSDTFromCUSDT"
72
76
  | "transferOwnership"
73
77
  | "upgradeTo"
74
78
  | "upgradeToAndCall"
@@ -131,6 +135,14 @@ export interface SwapInterface extends utils.Interface {
131
135
  functionFragment: "swapToCUSDT",
132
136
  values: [PromiseOrValue<BigNumberish>]
133
137
  ): string;
138
+ encodeFunctionData(
139
+ functionFragment: "swapToUSDTFromCROWD",
140
+ values: [PromiseOrValue<BigNumberish>]
141
+ ): string;
142
+ encodeFunctionData(
143
+ functionFragment: "swapToUSDTFromCUSDT",
144
+ values: [PromiseOrValue<BigNumberish>]
145
+ ): string;
134
146
  encodeFunctionData(
135
147
  functionFragment: "transferOwnership",
136
148
  values: [PromiseOrValue<string>]
@@ -197,6 +209,14 @@ export interface SwapInterface extends utils.Interface {
197
209
  functionFragment: "swapToCUSDT",
198
210
  data: BytesLike
199
211
  ): Result;
212
+ decodeFunctionResult(
213
+ functionFragment: "swapToUSDTFromCROWD",
214
+ data: BytesLike
215
+ ): Result;
216
+ decodeFunctionResult(
217
+ functionFragment: "swapToUSDTFromCUSDT",
218
+ data: BytesLike
219
+ ): Result;
200
220
  decodeFunctionResult(
201
221
  functionFragment: "transferOwnership",
202
222
  data: BytesLike
@@ -412,6 +432,16 @@ export interface Swap extends BaseContract {
412
432
  overrides?: Overrides & { from?: PromiseOrValue<string> }
413
433
  ): Promise<ContractTransaction>;
414
434
 
435
+ swapToUSDTFromCROWD(
436
+ _amount: PromiseOrValue<BigNumberish>,
437
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
438
+ ): Promise<ContractTransaction>;
439
+
440
+ swapToUSDTFromCUSDT(
441
+ _amount: PromiseOrValue<BigNumberish>,
442
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
443
+ ): Promise<ContractTransaction>;
444
+
415
445
  transferOwnership(
416
446
  newOwner: PromiseOrValue<string>,
417
447
  overrides?: Overrides & { from?: PromiseOrValue<string> }
@@ -499,6 +529,16 @@ export interface Swap extends BaseContract {
499
529
  overrides?: Overrides & { from?: PromiseOrValue<string> }
500
530
  ): Promise<ContractTransaction>;
501
531
 
532
+ swapToUSDTFromCROWD(
533
+ _amount: PromiseOrValue<BigNumberish>,
534
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
535
+ ): Promise<ContractTransaction>;
536
+
537
+ swapToUSDTFromCUSDT(
538
+ _amount: PromiseOrValue<BigNumberish>,
539
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
540
+ ): Promise<ContractTransaction>;
541
+
502
542
  transferOwnership(
503
543
  newOwner: PromiseOrValue<string>,
504
544
  overrides?: Overrides & { from?: PromiseOrValue<string> }
@@ -584,6 +624,16 @@ export interface Swap extends BaseContract {
584
624
  overrides?: CallOverrides
585
625
  ): Promise<void>;
586
626
 
627
+ swapToUSDTFromCROWD(
628
+ _amount: PromiseOrValue<BigNumberish>,
629
+ overrides?: CallOverrides
630
+ ): Promise<void>;
631
+
632
+ swapToUSDTFromCUSDT(
633
+ _amount: PromiseOrValue<BigNumberish>,
634
+ overrides?: CallOverrides
635
+ ): Promise<void>;
636
+
587
637
  transferOwnership(
588
638
  newOwner: PromiseOrValue<string>,
589
639
  overrides?: CallOverrides
@@ -738,6 +788,16 @@ export interface Swap extends BaseContract {
738
788
  overrides?: Overrides & { from?: PromiseOrValue<string> }
739
789
  ): Promise<BigNumber>;
740
790
 
791
+ swapToUSDTFromCROWD(
792
+ _amount: PromiseOrValue<BigNumberish>,
793
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
794
+ ): Promise<BigNumber>;
795
+
796
+ swapToUSDTFromCUSDT(
797
+ _amount: PromiseOrValue<BigNumberish>,
798
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
799
+ ): Promise<BigNumber>;
800
+
741
801
  transferOwnership(
742
802
  newOwner: PromiseOrValue<string>,
743
803
  overrides?: Overrides & { from?: PromiseOrValue<string> }
@@ -818,6 +878,16 @@ export interface Swap extends BaseContract {
818
878
  overrides?: Overrides & { from?: PromiseOrValue<string> }
819
879
  ): Promise<PopulatedTransaction>;
820
880
 
881
+ swapToUSDTFromCROWD(
882
+ _amount: PromiseOrValue<BigNumberish>,
883
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
884
+ ): Promise<PopulatedTransaction>;
885
+
886
+ swapToUSDTFromCUSDT(
887
+ _amount: PromiseOrValue<BigNumberish>,
888
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
889
+ ): Promise<PopulatedTransaction>;
890
+
821
891
  transferOwnership(
822
892
  newOwner: PromiseOrValue<string>,
823
893
  overrides?: Overrides & { from?: PromiseOrValue<string> }